Puffergröße für das Lesen von UDP-Paketen in Python

Ich versuche heraus zu finden /passen Sie die Größe der Netzwerk-Puffer:

import socket

sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

sock.getsockopt(socket.SOL_SOCKET,socket.SO_RCVBUF)
212992

Was auf der Erde ist das? ~ 0.2 MB ..!?

Allerdings, wenn ich bin auf der Suche für die Puffergröße, die anderswo, d.h. auf der Kommandozeile:

sampsa@sampsa-xps13:~/python/sockets$ cat /proc/sys/net/ipv4/tcp_wmem
4096    16384   4194304

.. Bekomme ich 4096 bytes.

Lassen Sie uns versuchen, um die Größe des Puffers festzulegen und dann seinen Wert:

sock.setsockopt(socket.SOL_SOCKET,socket.SO_RCVBUF,1024)

sock.getsockopt(socket.SOL_SOCKET,socket.SO_RCVBUF)     
2304

Was ist Los?

Ersetzen SOL_SOCKET mit SOL_UDP gibt "Protokoll nicht vorhanden"

Wie kann ich einstellen das max. Größe des UDP-Pakets .. oder sogar finden Sie es heraus?

  • RCVBUF hat das nicht viel zu tun mit die maximale Größe eines UDP-Paket, sondern vor allem, wie viel Daten gepuffert werden, bevor Sie verworfen, wenn die Anwendung nicht schnell genug ist, Sie zu Lesen. Es ist also eine socket-Eigenschaft und nicht mit UDP. Die maximale Größe eines UDP-Pakets ist 64 Kb.
  • Danke .. ja, äh.. das ist genau das, was ich wollte-Zustand. Ich wollte sagen, wie finde ich heraus / stellen Sie die Größe des Puffers
  • Und, btw, sind die Netzwerk-sockets FIFO ? first in - first verworfen, wenn der Puffer wird gesättigt?
InformationsquelleAutor El Sampsa | 2015-02-17
Schreibe einen Kommentar