Задать вопрос
@kodwi
https://moikrug.ru/kodwi

Как сразу полностью закрыть сокет у TcpClient, без таймаута и освободить порт в системе?

TcpClient server = new TcpClient();
server.Client.LingerState = new LingerOption(false, 0);
server.NoDelay = true;
....
server.Client.Shutdown(SocketShutdown.Both);
server.Close();
server = null;


И после этого все равно в течение примерно 30-ти секунд netstat показывает TIMEW по тому порту, который использовался tcp клиентом, и невозможно подключиться. Но при этом если приложение сразу закрыть, то становится возможно снова подключиться по этому порту, без таймаута.

Как я понял, соединение рвется, но система все равно держит порт в течение таймаута. Как сказать системе, чтобы сразу освобождала порт?

P.S. ОС Windows 10.
  • Вопрос задан
  • 838 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C#
по тому порту, который использовался tcp клиентом

возможно снова подключиться по этому порту, без таймаута.


Я вообще не пойму что вы делаете. Вы указываете фиксированный номер клиентского порта? Как и зачем?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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