Попытка предвидеть поведение .NET TcpClient.GetStream () относительно использования временного порта в многопоточной среде - PullRequest
3 голосов
/ 08 июля 2010

Мне интересно, есть ли у кого-нибудь подобный опыт ...

Я нахожусь в процессе многопоточности текущего последовательного процесса, который отправляет запрос через .NET TCPClient на удаленный сервер.

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

Однако я меньшеуверен, что произойдет, если я сделаю несколько запросов TCPClient.GetStream (), используя несколько потоков в одном приложении - с учетом локального временного (недолговечного) порта.

Если удаленный сервер знает, что он должен отправлять ответы обратно на временный порт, с которого исходил запрос, есть ли гарантии того, что каждый поток будет использовать разные временные порты для запроса - или есть ли шансиспользования того же порта?

Для контекста, это приложение для обработки карт.

Надеюсь, что имеет смысл.

1 Ответ

3 голосов
/ 08 июля 2010

Вам не нужно беспокоиться об этом, если вы не делаете так много подключений, что вы получаете голодание порта. API, связанные с Socket, абстрагируются от проблем с временными портами, и они не должны вас беспокоить (независимо от потоков / процессов), если у вас нет тысяч соединений, которые не очищаются достаточно быстро. По моему опыту, только пауки сталкиваются с такими проблемами. В этом случае было бы значительно легче управлять, если бы все соединения были сделаны из одного процесса.

В более новых Windows диапазон портов составляет 49152-65535 (или ~ 16k одновременных подключений), в более ранних версиях Windows - значительно меньше.

...