Socket.Connected Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
public:
property bool Connected { bool get(); };
public bool Connected { get; }
member this.Connected : bool
Public ReadOnly Property Connected As Boolean
Valeur de propriété
true
si Socket était connecté à une ressource distante lors de l'opération la plus récente ; sinon, false
.
Exemples
L’exemple de code suivant se connecte à un point de terminaison distant, vérifie la Connected propriété et vérifie l’état actuel de la connexion.
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
Remarques
La Connected
propriété obtient l’état de connexion de à Socket partir de la dernière opération d’E/S. Lorsqu’il retourne false
, le n’a Socket jamais été connecté ou n’est plus connecté.
Connected
n’est pas thread-safe ; il peut revenir true
après l’abandon d’une opération lorsque le Socket est déconnecté d’un autre thread.
La valeur de la Connected propriété reflète l’état de la connexion à partir de l’opération la plus récente. Si vous devez déterminer l’état actuel de la connexion, effectuez un appel d’envoi de zéro octet non bloquant. Si l’appel retourne correctement ou lève un code d’erreur WAEWOULDBLOCK (10035), le socket est toujours connecté ; sinon, le socket n’est plus connecté.
Si vous appelez Connect sur un socket UDP (User Datagram Protocol), la Connected propriété retourne true
toujours ; toutefois, cette action ne modifie pas la nature sans connexion inhérente d’UDP.