Увеличьте окно приема TCP для определенного сокета

Как увеличить окно приема TCP для определенного сокета? - Я знаю, как сделать так для всех сокетов путем установки ключа реестра TcpWindowSize, но как действительно делают это для определенного?

Согласно документам MSFT, путь

Вызывание функции Windows Sockets setsockopt, который устанавливает окно приема на основе на сокет.

Но в setsockopt, это упоминается о SO_RCVBUF:

Указывает, что общее пространство буфера на сокет, зарезервированное для, получает. Это не связано с SO_MAX_MSG_SIZE и не обязательно соответствует размеру окна приема TCP.

Таким образом, действительно ли это возможно? Как?

Спасибо.

8
задан rkellerm 5 May 2010 в 14:32
поделиться

3 ответа

SO_MAX_MSG_SIZE для UDP. Вот из MSDN :

SO_MAX_MSG_SIZE - возвращает максимальный размер исходящего сообщения для сокетов, ориентированных на сообщения, поддерживаемых протоколом. Не имеет значения для потоковых сокетов.

Также не устанавливается .

Для TCP просто используйте SO_ (SND | RCV) BUF .

5
ответ дан 5 December 2019 в 22:16
поделиться

Я почти уверен, что SO_RCVBUF - это то, что вам нужно. В первой ссылке говорится, что SO_RCVBUF имеет наивысший приоритет при определении размера окна TCP сверх всего, что установлено в системе. Насколько я понимаю, вторая часть говорит о том, что размер SO_RCVBUF не обязательно должен соответствовать размеру окна получения системы. Другими словами, это может быть другой размер, который вы установите.

1
ответ дан 5 December 2019 в 22:16
поделиться

Вы должны быть осторожны при настройке и проверке результатов. В Windows Vista и более поздних версиях есть интеллектуальная функция автоматической настройки адаптивного размера окна, которая специально настраивает размер окна для правильной работы как в локальных сетях, так и в длинных толстых сетях, таких как 3G и сети с высокими потерями. Самостоятельная установка размера окна переопределит это, так что окна больше не смогут автоматически настраивать размер окна. Это может повредить вашей производительности, если вам когда-нибудь понадобится работать в сети с особенно высокой задержкой, такой как сотовая сеть.

0
ответ дан 5 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: