Я раньше думал то использование SocketOptionName.ReuseAddress
, Я могу снова использовать порт, который находится в TIME_WAIT
состояние. Но я пытался экспериментировать с ним, и кажется, что это не имеет никакого эффекта.
Если я проверяю использование сокетов netstat
, и это показывает, что сокет находится в TIME_WAIT
состояние и я сразу выполняем клиент снова, я получаю исключение:
Только одно использование каждого адреса сокета (адрес/порт протокола/сети) обычно разрешается 172.16.16.16:12345
Я ничего не могу сделать из него. Можете Вы уточнять что SocketOptionName. ReuseAddress хорош для?
Почему вы в первую очередь привязываете свой клиентский порт? Вам, вероятно, не нужно, а если вы этого не сделаете, то гораздо лучше позволить ОС выбрать для вас временный порт, и тогда у вас вообще не будет этой проблемы.
Во-вторых, почему, по вашему мнению, рекомендуется повторно использовать сокет, это TIME_WAIT
; состояние существует по уважительной причине ...
Что касается того, почему это не работает для вас, взгляните на ссылку, которую я опубликовал в ответ на этот аналогичный вопрос: При привязке клиентского TCP-сокета к определенному локальный порт с Winsock, SO_REUSEADDR не имеет никакого эффекта