C # Socket Server Отправить вопрос - PullRequest
1 голос
/ 26 февраля 2009

У меня есть приложение .net 2.0, которое использует метод System.Net.Sockets Send () для отправки данных через равные промежутки времени, например, каждую минуту. По сути это сокет-сервер. В большинстве случаев клиенты не будут подключены для получения этих данных, но иногда пользователь запускает приложение, которое подключается для мониторинга данных, отправляемых через регулярные промежутки времени. В каждом интервале максимум, что я когда-либо отправлю, будет около 1024 байтов, а большинство сообщений будет намного меньше.

Мой вопрос: какое влияние на системные ресурсы оказывает вызов Send () каждую минуту, когда никто не получает его? Это в конечном итоге съест всю мою память? Я прочитал, что сокеты Windows основаны на сокетах Беркли, который создает дескриптор файла. Выполняется ли какой-либо стандартный выход низкого уровня (стандартный вывод), и данные, которые не принимаются, просто попадают в черную дыру?

1 Ответ

1 голос
/ 26 февраля 2009

Какое влияние на системные ресурсы оказывает вызов Send () каждую минуту, когда никто не может его получить?

Должно быть ни одного - должно выдать ошибку, потому что сокет не открыт.

Это в конечном итоге съест всю мою память?

Нет, просто выдается ошибка.

Существует ли какой-либо стандартный выход низкого уровня (стандартный вывод), и данные, которые не получены, просто попадают в черную дыру?

Данные действительно выбрасываются, и если вы обратите внимание, вы увидите ошибку.

Вы должны сначала проверить, открыта ли розетка перед отправкой. Если никто не подключен, не отправляйте. Одно дополнительное утверждение if.

-Adam

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