Как минимизировать потерю пакетов UDP

Я получаю ~ 3000 пакетов UDP в секунду, каждый из которых имеет размер ~ 200 байт. Я написал приложение Java, которое слушает эти пакеты UDP и просто записывает данные в файл. Затем сервер отправляет 15000 сообщений с ранее указанной скоростью. После записи в файл он содержит всего ~ 3500 сообщений. Используя wireshark, я подтвердил, что все 15000 сообщений были получены моим сетевым интерфейсом. После этого я попытался изменить размер буфера сокета (который изначально составлял 8496 байт):

(java.net.MulticastSocket)socket.setReceiveBufferSize(32*1024);

Это изменение увеличило количество сохраненных сообщений до ~ 8000. Я продолжал увеличивать размер буфера до 1 МБ. После этого количество сохраненных сообщений достигло ~ 14400. Увеличение размера буфера до больших значений не приведет к увеличению количества сохраненных сообщений. Я думаю, что достиг максимально допустимого размера буфера. Тем не менее, мне нужно захватить все 15000 сообщений, которые были получены моим сетевым интерфейсом.

Любая помощь будет оценена. Заранее спасибо.

Ответы на вопрос(4)

Ваш ответ на вопрос