Android - stuur DatagramSocket maximale buffergrootte

Ik heb een app die gegevens via UDP verzendt. Ik probeer te achterhalen wat de maximale/optimale verzendbuffergrootte is. Ik ben er in geslaagd een 2K-pakket te verzenden, maar grotere pakketten vormden een probleem. Ik heb geprobeerd met getSendBufferSize om te zien wat de verzendbuffergrootte is. Het keerde 110592 bytes terug. Wanneer ik alles in de buurt probeer te verzenden, krijg ik geen foutmelding, maar de datadosis wordt naar de server gestuurd.

Hoe weet ik wat de "toegestane" verzendbuffergrootte is?

Bedankt.

2

2 antwoord

DatagramPacket is slechts een omhulsel op een UDP-socket, dus de gebruikelijke UDP-regels zijn van toepassing.

64 kilobytes is de theoretische maximale grootte van een compleet IP-datagram, maar slechts 576 bytes worden gegarandeerd gerouteerd. Op elk willekeurig netwerkpad bepaalt de koppeling met de kleinste maximumtransmissie-eenheid de werkelijke limiet. (1500 bytes, minder headers is het algemene maximum, maar het is onmogelijk om te voorspellen hoeveel headers er zijn, dus het veiligst om berichten te beperken tot ongeveer 1400 bytes.)

Reference : Java DatagramPacket (UDP) maximum send/recv buffer size

2
toegevoegd
bedankt voor de referentie-URL
toegevoegd de auteur Amos, de bron

Ik ben ook deze fout tegengekomen, het zou 65535 - 28 = 65507 bytes moeten zijn, voor de parameter "buffer" -grootte van de DatagramPacket verzendmethode.

0
toegevoegd