TCP очень старается предотвратить перегрузку в сети. Все новые TCP-подключения начинаются в состоянии «медленного запуска», когда они отправляют только один пакет и ожидают подтверждения от другого конца. Если ACK получен, TCP отправит два пакета, затем четыре и т. Д., Пока не достигнет максимального размера окна.
Если вы генерируете сообщения с высокой скоростью передачи данных, вам действительно нужно избегать открытия и закрытия TCP-соединений. Каждый раз, когда вы открываете новое соединение, вы возвращаетесь в медленном старте. Если вы можете оставить сокет открытым, соединение TCP выйдет из режима медленного запуска и сможет отправлять данные с гораздо большей скоростью.
Для этого вам нужно заставить сервер обрабатывать более одного сообщения в соединении (что означает поиск способа разграничить каждое сообщение). Если ваш сервер поддерживает HTTP-кодирование любого рода, это будет работать; Обязательно изучите любой аргумент или конфигурацию, относящиеся к «постоянным» соединениям или HTTP 1.1, потому что именно так HTTP отправляет несколько запросов по одному TCP-соединению.
Одна из упомянутых вами опций - UDP. Если вы генерируете сообщения с достаточно высокой скоростью, вы, вероятно, потеряете некоторые из них из-за переполнения очередей в пути. Если отправляемые вами сообщения должны быть надежными, UDP, вероятно, не является хорошей основой.