2017-06-17 2 views
0

Ich versuche, eine Nachricht über UDP (eine Liste der Wörterbücher, die i json.dumps darauf verwendet) zu senden, und ich bekomme diese Fehlermeldung: OSError: [WinError 10040] Eine Meldung auf ein gesendetes Datagramm-Socket größer war als der interne Nachrichtenpuffer oder ein anderes Netzwerk zu begrenzen, oder der Puffer verwendet, um ein Datagramm in erhalten wurde, kleiner als das Datagramm selbstDividing UDP-Datagramm-Nachrichten

Dies ist der Client-Seite-Code:

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
server_address = (SRVR_NAME,DST_PORT) 
packet_info = json.dumps(packet_info) 
packet_info = packet_info.encode() 
sock.sendto(packet_info,server_address) 
sock.close() 

und das ist der Server-Side-Code:

Antwort

0

Meine psychischen Kräfte deuten darauf hin, dass Sie versuchen, mehr als 64 KB Daten in ein einzelnes UDP-Paket zu legen.

Die maximale Größe eines IP-Pakets mit allen Headern beträgt 65535 Byte. IP- und UDP-Header werden für mindestens 28 Byte kombiniert. Die maximale Größe des Datenteils eines UDP-Datagramms ist also 65535-28 == 65507.

Überprüfen Sie die Größe Ihres codierten packet_info vor dem Senden. Wenn es zu groß ist, um zu passen, teilen Sie es in mehrere Nachrichten auf und behandeln Sie es entsprechend.

Verwandte Themen