Мы решили использовать UDP для отправки большого количества данных, таких как координаты, между:
- клиент [C++] (используя опрос)
- сервер [JAVA] [Apache MINA]
Мои дейтаграммы имеют максимальный размер 512 байт, чтобы избежать фрагментации во время передачи.
Каждая дейтаграмма имеет заголовок, который я добавил (с идентификатором внутри), чтобы я мог отслеживать:
- сколько дейтаграмм получено
- какие из них получены
Проблема в том, что мы отправляем дейтаграммы слишком быстро. Мы получаем как в первый раз, а потом имеем большой убыток, а потом получаем, и снова большой убыток. Последовательность полученных дейтаграмм ID выглядит примерно так: [1], [2], [250], [251]...
Проблема возникает и в локальной сети (используется локальный хост, только 1 сетевая карта) Меня не волнует потеря дейтаграмм, но здесь речь идет не о простой потере из-за сети (с которой я могу справиться)
Итак, мои вопросы здесь:
- On client, how can I get the best :
- settings, or socket settings?
- способ отправить столько, сколько я могу, не будучи слишком много?
- На сервере Apache MINA, кажется, говорит, что он сам управляет ~ «размером буферного сокета» ~, но есть ли еще какие-то настройки, о которых нужно заботиться?
- Можно ли достичь примерно 1 МБ/с, зная, что наше соединение уже позволяет нам иметь хотя бы эту пропускную способность при загрузке обычных файлов?
В настоящее время, когда мы хотим передать информацию о координатах ~ 4 КБ, мы должны добавить время ожидания, чтобы мы ждали 5 минут или более, чтобы закончить его, это большая проблема для нас, зная, что мы должны отправлять каждую минуту не менее 10 МБ координаты информации.