При выполнении большого количества соединений на основе транзакций и проблемах с продолжительностью состояния TCPE TIME_WAIT (которая длятся 2MSL = 120 секунд), приводящей к тому, что клиентский хост больше не доступен для соединения с хостом специального сервера, вы должны рассмотреть UDP и управлять самим собой. повторная отправка потерянных запросов.
Я знаю, это звучит странно. Но стандартные службы, такие как DNS, должны использовать UDP для обработки тонны транзакций (запросить один ответ в одном сегменте UDP), чтобы избежать проблем, которые вы сами экспериментируете. Веб-браузеры отправляют запрос с использованием UDP на DNS. Повторный запрос выполняется с использованием UDP через короткое время, я полагаю, не более нескольких миллисекунд. Иногда разрешенное имя слишком длинное и не помещается в пакет UDP. Как следствие, DNS-сервер отправляет UDP-ответ с поднятым выделенным флагом, чтобы на этот раз попросить клиента использовать TCP.
Кроме того, вы можете рассмотреть также расширение T / TCP (Transactional TCP) TCP, если оно доступно на вашей платформе Windows. Он обеспечивает надежность TCP с более коротким состоянием TIME_WAIT, так как почти не требует затрат на модификации вашего клиентского кода. Насколько я знаю, это может работать, даже если сервер не поддерживает это расширение. Как примечание стороны, это в настоящее время не используется в Интернете, поскольку, как известно, имеет некоторый недостаток ...