Socket.Connected Property

Definition

Получает значение, указывающее, подключается ли объект Socket к удаленному узлу в результате последней операции Send или Receive.Gets a value that indicates whether a Socket is connected to a remote host as of the last Send or Receive operation.

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

Property Value

Boolean

Значение true, если объект Socket в результате последней операции был подключен к удаленному ресурсу; в противном случае — значение false.true if the Socket was connected to a remote resource as of the most recent operation; otherwise, false.

Examples

Следующий пример кода подключается к удаленной конечной точке, проверяет свойство Connected и проверяет текущее состояние соединения.The following code example connects to a remote endpoint, checks the Connected property, and checks the current state of the connection.

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

Remarks

Свойство Connected возвращает состояние соединения Socket на последней операции ввода-вывода.The Connected property gets the connection state of the Socket as of the last I/O operation. Когда он возвращает false, Socket не был подключен или больше не подключен.When it returns false, the Socket was either never connected, or is no longer connected.

Значение свойства Connected отражает состояние соединения в последней операции.The value of the Connected property reflects the state of the connection as of the most recent operation. Если необходимо определить текущее состояние соединения, сделайте неблокирующий вызов send с нулевым байтом.If you need to determine the current state of the connection, make a nonblocking, zero-byte Send call. Если вызов завершается успешно или вызывается код ошибки ВАЕВАУЛДБЛОКК (10035), сокет все еще подключен; в противном случае сокет больше не будет подключен.If the call returns successfully or throws a WAEWOULDBLOCK error code (10035), then the socket is still connected; otherwise, the socket is no longer connected.

При вызове Connect для сокета UDP, свойство Connected всегда возвращает true; Однако это действие не изменяет характер протокола UDP без подключения.If you call Connect on a User Datagram Protocol (UDP) socket, the Connected property always returns true; however, this action does not change the inherent connectionless nature of UDP.

Applies to