无法接收数据包,因为它在python中很快就会到来

2024-10-03 23:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python运行一个套接字程序,以便与嵌入式设备通信。我能够发送数据包并立即得到响应,我可以通过Wireshark进行验证。问题是我无法在我的代码中捕获它,但我可以在Wireshark中看到响应。下面的代码已组合发送和接收。如果我进行了拆分测试,并且能够在应用程序本身中看到收到确认。我怀疑响应非常快,以至于我的应用程序丢失了它。任何帮助都是值得的

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

Tags: noimportipdatatimeportaddresssocket
1条回答
网友
1楼 · 发布于 2024-10-03 23:30:12

您的程序运行良好,至少在服务器套接字上是这样。你只是决定不处理你收到的数据

while True:
    data, addr = serverSock.recvfrom(1024)
    print "Message: ", data

会解决你的问题,你就会收到信息。现在,您只需在while循环中接收,但循环从未中断

相关问题 更多 >