Socket.Disconnect(Boolean) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Закрывает подключение сокета и позволяет повторно использовать сокет.
public:
void Disconnect(bool reuseSocket);
public void Disconnect(bool reuseSocket);
member this.Disconnect : bool -> unit
Public Sub Disconnect (reuseSocket As Boolean)
Параметры
- reuseSocket
- Boolean
true Значение , если этот сокет можно повторно использовать после закрытия текущего подключения; falseв противном случае .
Исключения
Объект Socket закрыт.
Произошла ошибка при попытке доступа к сокету.
Примеры
В следующем примере кода создается сокет для синхронного взаимодействия и отправляется некоторые данные на удаленный узел. Затем вызывается, чтобы остановить действие отправки и получения, а Disconnectзатем Shutdownзакрыть подключение сокета.
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Connect the socket to the remote end point.
client.Connect(ipEndPoint);
// Send some data to the remote device.
string data = "This is a string of data <EOF>";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int bytesTransferred = client.Send(buffer);
// Write to the console the number of bytes transferred.
Console.WriteLine("{0} bytes were sent.\n", bytesTransferred);
// Release the socket.
client.Shutdown(SocketShutdown.Both);
client.Disconnect(true);
if (client.Connected)
Console.WriteLine("We're still connnected");
else
Console.WriteLine("We're disconnected");
Комментарии
Если используется протокол, ориентированный на подключение, этот метод можно использовать для закрытия сокета. Этот метод завершает подключение и задает Connected для свойства значение false. Однако если это trueтак, reuseSocket можно повторно использовать сокет.
Чтобы убедиться, что все данные отправляются и получаются до закрытия сокета, необходимо вызвать перед вызовом ShutdownDisconnect метода.
Если необходимо вызвать Disconnect без первого вызова Shutdown, можно задать DontLingerSocket параметр false и указать интервал времени ожидания ненулевого ожидания, чтобы обеспечить отправку данных в очередь для исходящей передачи.
Disconnect затем блокируется до тех пор, пока данные не будут отправлены или не истекает указанное время ожидания. Если задано DontLingerfalse значение и задан нулевой интервал времени ожидания, Close выпустите подключение и автоматически удаляет исходящие данные очереди.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.