各位大俠,
小弟在用python 做一個UDP 服務器端。腳本如下:
#/usr/bin/python3
from socketserver import ThreadingUDPServer, DatagramRequestHandler
import socket
class MyDatagramRequestHandler(DatagramRequestHandler):
def handle(self):
print(self.client_address)
Data = self.request[0]
socket = self.request[1]
#print(Data)
socket.sendto(b'OKOK', self.client_address)
if __name__ == "__main__":
HostIP = “192.168.15.2”
UdpPort = 9001
Server_Address = (HostIP, UdpPort)
print("Starting UDP server on %s port %d..." % (HostIP, UdpPort))
Udp_server = ThreadingUDPServer(Server_Address, MyDatagramRequestHandler)
Udp_server.serve_forever()
但我用wires hark監測資料包的時候,發現上面程式在收到UDP client發來的資料后,在使用socket.sendto() 回送資料的時候,
會連續發出兩個資料包。第一個是正確的資料包,而第二個會發出一個空資料包。


上面是我用wireshark抓到的包。從中可以看出,連續兩筆資料被發送到client. 搞不清楚這是怎么回事。
但從client 端用同樣的 sendto() 發出來的包就是正常的。只有一個資料包發送到 Udp server端。下面是Client端的部分代碼:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = (HostIP, UdpPort)
Message = b"OK"
sent = sock.sendto(Message, server_address)
百思不得其解,Server側出了什么問題。請各位高人指點一下。 多謝多謝。
uj5u.com熱心網友回復:
解決了嗎,請問怎么解決的轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241549.html
