Seite 1 von 1

Sockets - MAX Länge bei socket.send()

Verfasst: Montag 12. November 2007, 18:44
von JanDMC
Hey Leute,

Ich wollte mal wissen wie lang maximal der String sein darf, wenn ich socket.send(string) benutze. Ich weiß, dass ab einer gewissen Größe ein "Buffer Error" geworfen wird. In den 'Docs' hab ich nichts dazu gefunden.

mfg Jan

Verfasst: Dienstag 13. November 2007, 15:25
von skypa
bin mir dabei jetzt nicht unbedingt sicher, aber in den meisten Programmiersprachen hab ich im Bereich der Socket-Programmierung was mit 1024 gelesen.... :?

Verfasst: Dienstag 13. November 2007, 15:38
von Rebecca
Da hilft ein Blick in die Dokumentation der C-Library, da Pythons Sockets nur ein duenner Wrapper darum sind. Mit setsockopt kannst du SO_SNDBUF (zum Senden) und SO_RCVBUF (zum Empfangen) einstellen. Wie jetzt der Aufruf in Python genau aussieht, weiss ich auch nicht genau, ich rate mal:

Code: Alles auswählen

sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 4096)
(Das gibt bei mir zumindest keinen Fehler, ich habe aber nicht nachgeprueft, ob es auch das gewuenschte tut).

Verfasst: Dienstag 13. November 2007, 15:40
von JanDMC
//Edit

Ok danke ich werde nachgucken

mfg

Verfasst: Dienstag 13. November 2007, 15:46
von Rebecca
Ach, natuerlich gibts auch getsockopt. :D

Code: Alles auswählen

print sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
liefert bei mir 50580. Aus der socket-Manpage:
SO_SNDBUF
Sets or gets the maximum socket send buffer in bytes. The ker$-1òð
nel doubles this value (to allow space for bookkeeping overhead)
when it is set using setsockopt(2), and this doubled value is
returned by getsockopt(2). The default value is set by the
wmem_default sysctl and the maximum allowed value is set by the
wmem_max sysctl. The minimum (doubled) value for this option is
2048.
Analog fuer SO_RCVBUF.

Verfasst: Dienstag 13. November 2007, 16:26
von JanDMC
Alles klar

danke :D