send() - Wie viel Bytes kann man senden?
-
Hallo,
wie viel Bytes kann ich mit send() oder sendto() senden?
Wird das Paket aber einer bestimmten Größer gesplittet?Mfg
-
Ja, es wird bei send() durch TCP automatisch aufgeteilt. Bei sendto() bin ich mir nicht sicher, was passiert.
-
Ok danke.
Würde mich jetzt halt nur interessieren ob es bei sendto() genauso ist.
Ab wie viel Bytes wird den so ein Paket aufgeteil?
-
UDP übernimmt die Eigenschaften der darunterliegenden Vermittlungsschicht. Im Falle des Internet Protocols (IP) können Datenpakete maximal 65535 Bytes lang sein, wovon der IP-Header und UDP-Header insgesamt mindestens 28 Bytes belegen. UDP-Datagramme haben daher maximal 65507 Nutzdatenbytes.
-
wenn du bei UDP versuchst mehr zu senden also oben genannt bekommst du den error WSAEMSGSIZE
-
Dann nehme ich mal an mit send() kann man genauso viele Bytes senden?
-
bei ner TCP-verbindung kannste 'send' beliebig viele daten geben, z.b. rufst du es mit 12345 bytes auf und bekommst 10000 zurück, dann weisste dass 10000 bytes in den sendebuffer des sockets kopiert wurden (die werden also gesendet), während du's mit den restlichen 2345 bytes zu einem späteren zeitpunkt nochmal versuchen musst.

-
wenns TCP blocking ist, returniert send auch erst wenn alles versandt worden ist
-
Und wie kann man TCP sozusagen "unblocking" machen?
Müsste doch eigentlich mti der "ioctlsocket" Funktion gehen oder?
-
ja