Socket.Disconnect(Boolean) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Schließt die Socketverbindung und ermöglicht die Wiederverwendung des Sockets.
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
.
Ausnahmen
Das Socket-Objekt wurde geschlossen.
Fehler beim Versuch, auf den Socket zuzugreifen.
Beispiele
Im folgenden Codebeispiel wird ein Socket für die synchrone Kommunikation erstellt und einige Daten an einen Remotehost gesendet. Anschließend wird aufgerufen Shutdown, um die Sende- und Empfangsaktivität zu beenden, und Disconnect, um die Socketverbindung zu schließen.
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 verbindungsorientiertes Protokoll verwenden, können Sie diese Methode verwenden, um den Socket zu schließen. Diese Methode beendet die Verbindung und legt die Connected -Eigenschaft auf fest false
. Wenn reuseSocket
jedoch ist true
, können Sie den Socket wiederverwenden.
Um sicherzustellen, dass alle Daten gesendet und empfangen werden, bevor der Socket geschlossen wird, sollten Sie vor dem Aufrufen der Disconnect -Methode aufrufenShutdown.
Wenn Sie aufrufen Disconnect müssen, ohne zuerst aufzurufen Shutdown, können Sie die DontLingerSocket Option auf false
festlegen und ein Timeoutintervall ungleich null angeben, um sicherzustellen, dass daten, die für die ausgehende Übertragung in die Warteschlange eingereiht werden, gesendet werden.
Disconnect blockiert dann, bis die Daten gesendet werden oder bis das angegebene Timeout abläuft. Wenn Sie auf false
festlegen DontLinger und ein Timeoutintervall von null angeben, Close wird die Verbindung freigegeben und ausgehende Daten in der Warteschlange automatisch verworfen.
Hinweis
Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Dokumentation zu Windows Sockets Version 2-API-Fehlercode eine ausführliche Beschreibung des Fehlers.
Hinweis
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.