Socket.Disconnect(Boolean) Methode

Definition

Schließt die Socketverbindung und ermöglicht die Wiederverwendung des Sockets.Closes the socket connection and allows reuse of the socket.

public:
 void Disconnect(bool reuseSocket);
public void Disconnect (bool reuseSocket);
member this.Disconnect : bool -> unit
Public Sub Disconnect (reuseSocket As Boolean)

Parameter

reuseSocket
Boolean

true, wenn dieser Socket wiederverwendet werden kann, nachdem die aktuelle Verbindung geschlossen wurde, andernfalls false.true if this socket can be reused after the current connection is closed; otherwise, false.

Ausnahmen

Für diese Methode wird Windows 2000 oder früher benötigt, andernfalls wird eine Ausnahme ausgelöst.This method requires Windows 2000 or earlier, or the exception will be thrown.

Das Socket-Objekt wurde geschlossen.The Socket object has been closed.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Beispiele

Das folgende Codebeispiel erstellt einen Socket für die synchrone Kommunikation und sendet einige Daten an einen Remote Host.The following code example creates a socket for synchronous communication and sends some data to a remote host. Anschließend wird Shutdownaufgerufen, um die Sende-und Empfangs Aktivität zu beenden, und Disconnect, um die Socketverbindung zu schließen.It then calls Shutdown, to stop the send and receive activity, and Disconnect, to close the socket connection.

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

Hinweise

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, können Sie den Socket mit dieser Methode schließen.If you are using a connection-oriented protocol, you can use this method to close the socket. Diese Methode beendet die Verbindung und legt die Connected-Eigenschaft auf falsefest.This method ends the connection and sets the Connected property to false. Wenn reuseSocket jedoch trueist, können Sie den Socket wieder verwenden.However, if reuseSocket is true, you can reuse the socket.

Um sicherzustellen, dass alle Daten vor dem Schließen des Sockets gesendet und empfangen werden, sollten Sie Shutdown aufrufen, bevor Sie die Disconnect-Methode aufrufen.To ensure that all data is sent and received before the socket is closed, you should call Shutdown before calling the Disconnect method.

Wenn Sie Disconnect aufrufen müssen, ohne zuerst Shutdownaufrufen zu müssen, können Sie die Option DontLingerSocket auf false festlegen und ein Timeout Intervall angeben, das nicht NULL ist, um sicherzustellen, dass Daten in der Warteschlange für ausgehende Übertragungen gesendet werden.If you need to call Disconnect without first calling Shutdown, you can set the DontLingerSocket option to false and specify a nonzero time-out interval to ensure that data queued for outgoing transmission is sent. Disconnect dann blockiert, bis die Daten gesendet werden oder bis das angegebene Timeout abläuft.Disconnect then blocks until the data is sent or until the specified time-out expires. Wenn Sie DontLinger auf false festlegen und ein Timeout Intervall von NULL angeben, wird die Verbindung von Close freigegeben, und ausgehende Daten in der Warteschlange werden automatisch verworfen.If you set DontLinger to false and specify a zero time-out interval, Close releases the connection and automatically discards outgoing queued data.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Gilt für: