Socket.Disconnect(Boolean) Método

Definição

Fecha a ligação da tomada e permite a reutilização da tomada.

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 este soquete puder ser reutilizado após o encerramento da ligação atual; caso contrário, false.

Exceções

O Socket objeto foi encerrado.

Ocorreu um erro ao tentar aceder ao soquete.

Exemplos

O seguinte exemplo de código cria um soquete para comunicação síncrona e envia alguns dados para um host remoto. Depois chama Shutdown, para parar a atividade de enviar e receber, e Disconnect, para fechar a ligação ao 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");

Observações

Se estiver a usar um protocolo orientado a conexão, pode usar este método para fechar o soquete. Este método termina a ligação e define a Connected propriedade para false. No entanto, se reuseSocket for true, pode reutilizar o soquete.

Para garantir que todos os dados são enviados e recebidos antes do socket ser fechado, deve ligar Shutdown antes de chamar o Disconnect método.

Se precisar de ligar Disconnect sem ligar antes Shutdown, pode definir a DontLingerSocket opção e false especificar um intervalo de time-out não nulo para garantir que os dados enfileirados para transmissão de saída são enviados. Disconnect depois bloqueia até que os dados sejam enviados ou até expirar o tempo de espera especificado. Se definires DontLinger e false especificares um intervalo de tempo de espera zero, Close liberta a ligação e descarta automaticamente os dados em fila de saída.

Note

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

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Aplica-se a