Максимальное количество TCP-подключений к машине - PullRequest
2 голосов
/ 18 марта 2009

Я создаю Службу Windows в .NET, к которой может подключиться N номер клиента. Служба запускает прослушиватель TCP и принимает клиентские подключения. Проблема в том, что я могу открыть только 10 подключений к этой услуге. Метод listener :: AcceptTcpClient () принимает только 10 соединений и выдает исключение для 11-го. Клиентское приложение использует класс System.Net.Sockets.TcpClient, а служба использует класс System.Net.Sockets.TcpListener.

Это исключение, которое я получаю, когда пытаюсь выполнить несколько соединений в цикле for с этой службой (после установления 10-го соединения):

"Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом"

Ответы [ 2 ]

4 голосов
/ 18 марта 2009

Звучит так, будто вы сталкиваетесь с хорошо известным 10-пределом подключений для полуоткрытых TCP-подключений в Windows XP . Это ограничение жестко запрограммировано в XP SP 2, и его нельзя изменить, за исключением исправления системы, что может технически нарушить ваше лицензионное соглашение с конечным пользователем (IANAL). Увы, XP не предназначена для серверной системы.

Для Windows XP Professional максимальное количество других компьютеров, которые разрешено одновременно подключиться по сети десять. Это Лимит включает в себя все перевозки и протоколы совместного использования ресурсов. Для Windows XP Home Edition максимальное количество других компьютеров, которые разрешено одновременно подключиться по сети пять. это предел количество одновременных сеансы с других компьютеров Система разрешена для размещения. это ограничение не распространяется на использование административные инструменты, которые прикрепляются от удаленный компьютер.

3 голосов
/ 08 апреля 2010

Я не думаю, что ответ, который был дан ранее, действителен. Я провел некоторое исследование, и, похоже, нет причины, по которой TcpClient имеет какие-либо строгие ограничения. В другом ответе предлагалось ограничить 10 активных соединений TCP в Windows XP для службы сервера, но это справедливо только для определенных протоколов приложений (таких как совместное использование, почта), предоставляемых Microsoft.

Я обнаружил, что Microsoft добавила некоторые ограничения в XP SP2 и продолжила работу в Vista SP1, чтобы ограничить полуоткрытые TCP-соединения 10 . Они также ограничили количество новых подключений 10 за одну секунду . Это были обе попытки уменьшить влияние вирусного программного обеспечения. Очевидно, они не были очень успешными, поэтому Microsoft наконец-то решила удалить их в Vista SP2 и более поздних версиях.

Возможно, это была настоящая проблема ОП - возможно, вы пытаетесь создать эти соединения слишком быстро в клиенте?

Как я уже упоминал в своих комментариях к ранее принятому ответу, я лично пишу клиент-серверное программное обеспечение и у меня не было проблем с пределом 10. Когда я проводил тесты, использовал Windows XP в прошлом и сейчас с Windows 7 ( предел приложения теперь составляет 20 подключений), я могу легко превысить этот предел. Я только что протестировал и смог создать> 140 активных / установленных соединений между одним хостом (Windows 7 Home Premium) и другим хостом (Windows 7 Enterprise); обе клиентские операционные системы. Это использует Java, но на самом деле не должно быть никакой разницы с .NET (который я также проверял в прошлом).

...