Socket.Disconnect(Boolean) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Cierra la conexión del socket y permite reutilizarlo.
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 se puede reutilizar el socket una vez cerrada la conexión actual; de lo contrario, false
.
Excepciones
El objeto Socket 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 = gcnew IPEndPoint( ipAddr,11000 );
Socket^ client = gcnew 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>";
array<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" );
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 en false
. 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 a Shutdown antes de llamar al Disconnect método .
Si necesita llamar a sin llamar Disconnect primero 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, se bloquea hasta que se envíen los datos 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 cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.