Udostępnij za pośrednictwem


Socket.Connected Właściwość

Definicja

Pobiera wartość wskazującą, czy Socket element jest połączony z hostem zdalnym od ostatniego Send lub Receive operacji.

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

Wartość właściwości

true jeśli element Socket został połączony z zasobem zdalnym od najnowszej operacji; w przeciwnym razie false.

Przykłady

Poniższy przykład kodu łączy się z zdalnym punktem końcowym, sprawdza Connected właściwość i sprawdza bieżący stan połączenia.

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

Uwagi

Właściwość Connected pobiera stan Socket połączenia od ostatniej operacji we/wy. Gdy funkcja zwraca falsewartość , Socket nigdy nie została połączona lub nie jest już połączona. Connected nie jest bezpieczne wątkowo; może zostać zwrócona true po przerwaniu operacji po rozłączeniu Socket z innym wątkiem.

Wartość Connected właściwości odzwierciedla stan połączenia od najnowszej operacji. Jeśli musisz określić bieżący stan połączenia, utwórz wywołanie odblokowywania bez bajtów. Jeśli wywołanie zostanie zwrócone pomyślnie lub zgłosi kod błędu WAEWOULDBLOCK (10035), gniazdo jest nadal połączone; w przeciwnym razie gniazdo nie jest już połączone.

Jeśli wywołasz Connect gniazdo protokołu UDP (User Datagram Protocol), Connected właściwość zawsze zwraca truewartość ; jednak ta akcja nie zmienia nieodłącznego charakteru bez połączenia protokołu UDP.

Dotyczy