Поделиться через


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.

Применяется к