Socket.Disconnect(Boolean) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.