Socket.Disconnect(Boolean) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.