Почему я получаю это SocketException в своем сервисе C #? - PullRequest
4 голосов
/ 17 февраля 2009

У меня есть служба, которая отвечает за чтение и запись с сервера. Чтение и запись осуществляется в разных темах.

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

Служба работает в течение 4 дней, и после этого я получаю эту ошибку постоянно, всякий раз, когда служба пытается прочитать с порта:

System.Net.Sockets.SocketException: операция над сокетом не может быть выполнена, потому что системе не хватало буферного пространства или из-за переполнения очереди

Ответы [ 2 ]

6 голосов
/ 17 февраля 2009

Это может произойти, если вы очень быстро устанавливаете большое количество исходящих соединений и исчерпываете локальные порты. Вы можете прочитать о «эфемерном диапазоне портов» здесь .

Или, возможно, у вас просто не хватает розеток. Убедитесь, что вы закрыли их после того, как вы их закончили.

0 голосов
/ 17 февраля 2009

Я также настоятельно рекомендую вам взглянуть на ваш поток записи и на то, как вы ссылаетесь на ресурсы, связанные с Socket. То есть, вы вызываете Close / Dispose для любого NetworkStream или других объектов, которые вы используете с Socket? Пример кода из потока записи будет полезен, если вы все еще боретесь с проблемой.

Возможно, вы также захотите контролировать память процесса и управлять использованием через диспетчер задач.

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