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

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
JanDMC
User
Beiträge: 95
Registriert: Donnerstag 23. September 2004, 19:35
Kontaktdaten:

Montag 12. November 2007, 18:44

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
joa nää python is toll :D
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Dienstag 13. November 2007, 15:25

bin mir dabei jetzt nicht unbedingt sicher, aber in den meisten Programmiersprachen hab ich im Bereich der Socket-Programmierung was mit 1024 gelesen.... :?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dienstag 13. November 2007, 15:38

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).
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
JanDMC
User
Beiträge: 95
Registriert: Donnerstag 23. September 2004, 19:35
Kontaktdaten:

Dienstag 13. November 2007, 15:40

//Edit

Ok danke ich werde nachgucken

mfg
joa nää python is toll :D
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Dienstag 13. November 2007, 15:46

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.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
JanDMC
User
Beiträge: 95
Registriert: Donnerstag 23. September 2004, 19:35
Kontaktdaten:

Dienstag 13. November 2007, 16:26

Alles klar

danke :D
joa nää python is toll :D
Antworten