Freigeben über


Socket.Connected Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob ein Socket mit dem Remotehost des letzten Send-Vorgangs oder Receive-Vorgangs verbunden ist.

public:
 property bool Connected { bool get(); };
public bool Connected { get; }
member this.Connected : bool
Public ReadOnly Property Connected As Boolean

Eigenschaftswert

true, wenn Socket beim letzten Vorgang mit einer Remoteressource verbunden war, andernfalls false.

Beispiele

Im folgenden Codebeispiel wird eine Verbindung mit einem Remoteendpunkt hergestellt, die Connected -Eigenschaft und der aktuelle Status der Verbindung überprüft.

client->Connect( anEndPoint );
if (  !client->Connected )
{
   Console::WriteLine( "Winsock error: {0}", Convert::ToString(
      System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) );
}
   
// This is how you can determine whether a socket is still connected.
bool blockingState = client->Blocking;
try
{
   array<Byte>^tmp = gcnew array<Byte>(1);
   client->Blocking = false;
   client->Send( tmp, 0, static_cast<SocketFlags>(0) );
   Console::WriteLine( L"Connected!" );
}
catch ( SocketException^ e ) 
{
   // 10035 == WSAEWOULDBLOCK
   if ( e->NativeErrorCode.Equals( 10035 ) )
   {
      Console::WriteLine( "Connected from an exception!" );
   }
   else
   {
      Console::WriteLine( "Disconnected: {0}!", e->NativeErrorCode );
   }
}
finally
{
   client->Blocking = blockingState;
}

Console::WriteLine( "Connected: {0}", client->Connected );
// .Connect throws an exception if unsuccessful
client.Connect(anEndPoint);

// This is how you can determine whether a socket is still connected.
bool blockingState = client.Blocking;
try
{
    byte [] tmp = new byte[1];

    client.Blocking = false;
    client.Send(tmp, 0, 0);
    Console.WriteLine("Connected!");
}
catch (SocketException e)
{
    // 10035 == WSAEWOULDBLOCK
    if (e.NativeErrorCode.Equals(10035))
    {
        Console.WriteLine("Still Connected, but the Send would block");
    }
    else
    {
        Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
    }
}
finally
{
    client.Blocking = blockingState;
}

Console.WriteLine("Connected: {0}", client.Connected);
    ' .Connect throws an exception if unsuccessful
    client.Connect(anEndPoint)
    
    ' This is how you can determine whether a socket is still connected.
    Dim blockingState As Boolean = client.Blocking
    Try
        Dim tmp(0) As Byte
        
        client.Blocking = False
        client.Send(tmp, 0, 0)
        Console.WriteLine("Connected!")
    Catch e As SocketException
        ' 10035 == WSAEWOULDBLOCK
        If e.NativeErrorCode.Equals(10035) Then
            Console.WriteLine("Still Connected, but the Send would block")
        Else
            Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode)
        End If
    Finally
        client.Blocking = blockingState
    End Try
    
    Console.WriteLine("Connected: {0}", client.Connected)

End Sub

Hinweise

Die Connected -Eigenschaft ruft den Verbindungsstatus des Socket ab dem letzten E/A-Vorgang ab. Wenn es zurückgibt false, war der Socket entweder nie verbunden oder ist nicht mehr verbunden. Connected ist nicht threadsicher; Es kann zurückgegeben werden true , nachdem ein Vorgang abgebrochen wurde, wenn die Socket Verbindung mit einem anderen Thread getrennt wird.

Der Wert der Connected -Eigenschaft spiegelt den Zustand der Verbindung ab dem letzten Vorgang wider. Wenn Sie den aktuellen Zustand der Verbindung ermitteln müssen, führen Sie einen nicht blockierenden Nullbyte-Sendeanruf aus. Wenn der Aufruf erfolgreich zurückgibt oder einen WAEWOULDBLOCK-Fehlercode (10035) auslöst, ist der Socket weiterhin verbunden. andernfalls ist der Socket nicht mehr verbunden.

Wenn Sie einen UDP-Socket (User Datagram Protocol) aufrufen Connect , gibt die Connected Eigenschaft immer zurück true. Diese Aktion ändert jedoch nicht die inhärente verbindungslose Natur von UDP.

Gilt für: