Android - DatagramSocket maksimum tampon boyutunu gönder

UDP üzerinden veri gönderen bir uygulama var. Maksimum/optimal gönderme arabelleği boyutunu bulmak için çalışıyorum. 2k paketi göndermeyi başarabildim, ancak daha büyük paketler bir problemdi. Gönderme arabelleğinin boyutunu görmek için getSendBufferSize kullanmayı denedim. 110592 bayt döndürdü. Yakın bir şey göndermeye çalıştığımda, bir hata alamıyorum, ancak veri dozu sunucuya ulaşıyor.

"İzin verilen" arabellek boyutunu nereden biliyorsunuz?

Teşekkürler.

2

2 cevap

DatagramPacket, UDP tabanlı bir soket üzerinde sadece bir sarıcıdır, bu yüzden alışılmış UDP kuralları geçerlidir.

64 kilobayt, tam bir IP datagramının teorik maksimum boyutu, ancak sadece 576 bayt yönlendirilmek üzere garantilidir. Herhangi bir ağ yolunda, en küçük Maksimum Aktarım Ünitesi ile bağlantı gerçek limiti belirler. (1500 bayt, daha az üstbilgiler ortak maksimumdur, ancak kaç tane üstbilginin olacağını tahmin etmek imkansızdır, böylece iletileri en fazla 1400 bayta sınırlayacak şekilde güvenlidir.)

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

2
katma
referans URL için teşekkürler
katma yazar Amos, kaynak

Bu hatayla da karşılaştım, DatagramPacket yönteminin "arabellek" parametresi için 65535 - 28 = 65507 bayt olmalıdır.

0
katma