C #. Net Socket Keep Alive время? - PullRequest
3 голосов
/ 28 июня 2011

Вопрос новичка здесь .. Просто пытаюсь быть уверенным здесь ..

Это не вопрос HTTP Keep-Alive.

Есть ли способ сделатьуверен, что сокет закрывается () через определенное время.

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

Есть ли какое-либо время ожидания, например, встроенная команда в Socket?

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

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Я никогда не пробовал сам, но есть LingerOption.

Взгляните на свойство Socket.LingerState .

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

0 голосов
/ 28 июня 2011

Я предполагаю, что вы говорите о протоколе TCP.
Если вы хотите убедиться, что клиент получил что-то, то клиент должен отправить ответ на последнее полученное сообщение (например, неверный пароль)и сервер закрывает соединение после получения подтверждения или после истечения времени ожидания.

...