Compartilhar via


Socket.Disconnect(Boolean) Método

Definição

Fecha a conexão do soquete e permite a reutilização do soquete.

public:
 void Disconnect(bool reuseSocket);
public void Disconnect(bool reuseSocket);
member this.Disconnect : bool -> unit
Public Sub Disconnect (reuseSocket As Boolean)

Parâmetros

reuseSocket
Boolean

true se esse soquete puder ser reutilizado após o fechamento da conexão atual; caso contrário, false.

Exceções

O Socket objeto foi fechado.

Erro ao tentar acessar o soquete.

Exemplos

O exemplo de código a seguir cria um soquete para comunicação síncrona e envia alguns dados para um host remoto. Em seguida, ele chama Shutdown, para interromper a atividade de envio e recebimento e Disconnect, para fechar a conexão de soquete.

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");

Comentários

Se você estiver usando um protocolo orientado à conexão, poderá usar esse método para fechar o soquete. Esse método encerra a conexão e define a Connected propriedade como false. No entanto, se reuseSocket for true, você pode reutilizar o soquete.

Para garantir que todos os dados sejam enviados e recebidos antes que o soquete seja fechado, você deve ligar Shutdown antes de chamar o Disconnect método.

Se você precisar ligar Disconnect sem chamar Shutdownprimeiro, poderá definir a opção DontLingerSocket e false especificar um intervalo de tempo limite diferente de zero para garantir que os dados enfileirados para a transmissão de saída sejam enviados. Disconnect em seguida, bloqueia até que os dados sejam enviados ou até que o tempo limite especificado expire. Se você definir DontLingerfalse e especificar um intervalo de tempo limite zero, Close liberará a conexão e descartará automaticamente os dados enfileirados de saída.

Observação

Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.

Observação

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.

Aplica-se a