Мое приложение вызывает ошибку, когда все приложения Windows пытаются использовать сокет TCP - получение "операция с сокетом не может быть выполнена, потому что ..." (0x2747) ошибка - PullRequest
0 голосов
/ 17 ноября 2011

После того, как написанное мной приложение какое-то время работало, все соединения TCP перестали работать (не удалось создать новые сокеты). Создание нового сокета вызывает ошибку «Операция над сокетом не может быть выполнена из-за недостатка места в буфере в системе или из-за переполнения очереди».

Я прочитал в интернете, что кажется, что я заставил Windows использовать все "эфемерные" порты, но когда я проверяю с помощью "netstat -a", я не вижу "скоплений" открытых сокетов.

Приложение является клиентом / сервером TCP.

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 ноября 2011

Возможно, вы израсходовали все пространство буфера сокета.Вы используете большие буферы сокетов?

0 голосов
/ 17 ноября 2011

Эфемерные порты имеют несколько ограничений: может быть только 4000 уникальных подключений от клиентского компьютера к удаленной службе за один раз (TIME_WAIT).TIME_WAIT обычно настроен на 240 секунд.Вы можете иметь только 4000 соединений в 240 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...