Compartir por


Socket.Disconnect(Boolean) Método

Definición

Cierra la conexión de socket y permite reutilizar el socket.

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 si este socket se puede reutilizar después de cerrar la conexión actual; de lo contrario, false.

Excepciones

El Socket objeto se ha cerrado.

Error al intentar acceder al socket.

Ejemplos

En el ejemplo de código siguiente se crea un socket para la comunicación sincrónica y se envían algunos datos a un host remoto. A continuación, llama Shutdowna , para detener la actividad de envío y recepción, y Disconnect, para cerrar la conexión de socket.

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

Comentarios

Si usa un protocolo orientado a la conexión, puede usar este método para cerrar el socket. Este método finaliza la conexión y establece la Connected propiedad falseen . Sin embargo, si reuseSocket es true, puede reutilizar el socket.

Para asegurarse de que todos los datos se envían y reciben antes de cerrar el socket, debe llamar Shutdown a antes de llamar al Disconnect método .

Si necesita llamar Disconnect sin llamar Shutdowna , puede establecer la DontLingerSocket opción false en y especificar un intervalo de tiempo de espera distinto de cero para asegurarse de que se envían los datos en cola para la transmisión saliente. Disconnect a continuación, bloquea hasta que los datos se envían o hasta que expire el tiempo de espera especificado. Si establece DontLingerfalse en y especifica un intervalo de tiempo de espera cero, Close libera la conexión y descarta automáticamente los datos en cola salientes.

Nota:

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.

Nota:

Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, consulte Seguimiento de red en .NET Framework.

Se aplica a