Socket.Connected Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 false
wartość , 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 true
wartość ; jednak ta akcja nie zmienia nieodłącznego charakteru bez połączenia protokołu UDP.