Socket.Connected Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
public:
property bool Connected { bool get(); };
public bool Connected { get; }
member this.Connected : bool
Public ReadOnly Property Connected As Boolean
Hodnota vlastnosti
true
Socket pokud byl prostředek připojený ke vzdálenému prostředku k poslední operaci, false
v opačném případě .
Příklady
Následující příklad kódu se připojí ke vzdálenému koncovému bodu, zkontroluje Connected vlastnost a zkontroluje aktuální stav připojení.
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
Poznámky
Vlastnost Connected
získá stav Socket připojení k poslední vstupně-výstupní operaci. Když se vrátí false
, Socket buď nebyl nikdy připojen, nebo už není připojený.
Connected
není bezpečný pro přístup z více vláken; může se vrátit true
po přerušení operace při Socket odpojení od jiného vlákna.
Hodnota Connected vlastnosti odráží stav připojení k poslední operaci. Pokud potřebujete zjistit aktuální stav připojení, proveďte neblokující nulové bajtové volání Odeslat. Pokud se volání úspěšně vrátí nebo vyvolá kód chyby WAEWOULDBLOCK (10035), pak je soket stále připojen; jinak už soket není připojený.
Pokud zavoláte Connect na soket Connected UDP (User Datagram Protocol), vlastnost vždy vrátí true
, ale tato akce nezmění inherentní povahu připojení UDP.