Java / Android: UDP - не может принимать большие пакеты (но все равно <64k) - PullRequest
0 голосов
/ 06 ноября 2011

Я работаю над клиент-серверным приложением Android (два приложения - одно клиентское и одно серверное). Ожидается, что сервер отправит видео клиенту по UDP. Я делю видео на отдельные кадры, каждый из которых в итоге занимает около 50 000 байтов, что теоретически все еще меньше, чем максимум для UDP.

В настоящее время я тестирую на двух эмуляторах Android, работающих на одной машине, и использую переадресацию портов UDP между ними для их подключения.

Я настроил UDP так, что если я отправлю байтовый массив размером ~ 5000 или меньше байтов, он будет работать нормально. Если я пытаюсь отправить свои байтовые массивы (50000 байт), приложение зависает на методе DatagramSocket.receive () на клиенте.

Есть ли способ настроить передачу UDP для получения большего размера байта?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 06 ноября 2011

Но это не меньше, чем практический максимум для UDP, который составляет 534 или 576 байт, не могу вспомнить, какой в ​​данный момент, извините. Что бы это ни было, это самый большой размер пакета, который позволит избежать фрагментации. После того как пакет UDP фрагментирован на N фрагментов, вероятность потери в N раз выше.

...