私は、組み込みデバイスと通信するために、Pythonでソケットプログラムを実行しています。私はパケットを送って即座に応答を得ることができます。これをWiresharkで確認できます。私のコードではそれを捕まえることはできませんが、私はWiresharkの応答を見ることができます。以下のコードは、送受信を組み合わせたものです。テストを分割すると、アプリケーション自体で承認を受け取ることができます。私は、アプリケーションがそれを見逃している程度に応答が非常に速いと思う。どんな助けも受け入れられます。Pythonでパケットがすぐに届くようにパケットを受信できません
import socket
import select
from binascii import unhexlify
from threading import Thread
import time
def client():
UDP_IP_ADDRESS = "192.168.1.10"
UDP_PORT_NO = 4010
clientSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM )
clientSock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
packetToSend=""
messageToSend = raw_input("Message to Send :")
# if messageTOSend too big send as multiple packets
packetsToSend = addpack(messageToSend)
for count, currentPacket in enumerate(packetsToSend):
print "\nData Packet %d:"%count
print currentPacket
packetToSend = "".join(map(chr, currentPacket))
clientSock.sendto(packetToSend, (UDP_IP_ADDRESS, UDP_PORT_NO))
time.sleep(1)
print "packets sent"
def server():
UDP_IP_ADDRESS = ""
UDP_PORT_NO = 4011
print "waiting for data"
serverSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serverSock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
serverSock.bind((UDP_IP_ADDRESS, UDP_PORT_NO))
while True:
data, addr = serverSock.recvfrom(1024)
time.sleep(5)
print "Message: ", data
if __name__=='__main__':
a = 0
try:
Thread(target=server).start()
Thread(target=client).start()
except Exception, errtxt:
print errtxt
'server'のループは、受信したメッセージを破棄します(つまり、' print'ingしません)。それ以外は機能的に何も問題はありません。問題はあなたの設定にあるかもしれません。 –
はい、問題は私の設定です。今は正常に動作します。ありがとう。 –