Socket.Disconnect (повторное использование bool) - PullRequest
5 голосов
/ 18 февраля 2011

Socket.Disconnect(bool reuse) в соответствии с MSDN позволяет программе повторно использовать сокет.Мои вопросы:

  1. Если мы решим повторно использовать сокет, значит ли это, что он также будет использовать ту же локальную конечную точку?Сохранит ли он порт для этого сокета или просто (я не верю, что он) сохранит все ресурсы объектов?быть назначены следующему соединению, и если да, то буферы отправки / получения автоматически очищаются или есть какой-то способ их очистки?Socket.ShutDown(ShutDown.Both) делает это для меня при отключении?

  2. В какой ситуации я бы использовал Socket.Disconnect(false)?Если бы вся цель состояла в том, чтобы повторно использовать сокет, что бы это дало мне?

1 Ответ

5 голосов
/ 20 декабря 2011
  1. Если повторное использование = ложь, розетка будет автоматически закрыта после закрытия.Все настройки, такие как размеры EndPoint и Buffer, не сбрасываются на значения по умолчанию, но вы можете изменить их, если хотите.Supose пользователь решает изменить порт подключения.Вам просто нужно закрыть сокет, изменить порт и снова подключить сокет, не создавая новый сокет и не устанавливая его снова.

  2. Socket.Shutdown просто отключает отправку / получение / оба;не отсоединять розетку.Однако это происходит для новых входящих / исходящих данных, поэтому буферы будут очищаться в обычном режиме.Рекомендуется вызывать его перед отключением, чтобы убедиться, что все данные были отправлены и данные не были получены при отключении.

  3. Возвращаясь к примеру 1. Предположим, вам нужно только изменитьпорт.Вы не хотите снова создавать сокет, снова настраивать все параметры сокета как события и буферы и т. Д. Он потребляет время и ресурсы, поэтому лучше повторно использовать уже установленный сокет.

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