Socket.Connected Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
public:
property bool Connected { bool get(); };
public bool Connected { get; }
member this.Connected : bool
Public ReadOnly Property Connected As Boolean
Özellik Değeri
true
en Socket son işlemden itibaren uzak bir kaynağa bağlıysa; değilse, false
.
Örnekler
Aşağıdaki kod örneği uzak uç noktaya bağlanır, özelliği denetler Connected ve bağlantının geçerli durumunu denetler.
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
Açıklamalar
özelliği, Connected
son G/Ç işlemi itibarıyla öğesinin bağlantı durumunu Socket alır. döndürdüğünde false
Socket , hiçbir zaman bağlanmadı veya artık bağlı değil.
Connected
iş parçacığı güvenli değildir; başka bir iş parçacığıyla bağlantısı kesildiğinde Socket bir işlem durdurulduktan sonra döndürülebilirtrue
.
özelliğinin Connected değeri, en son işlemden itibaren bağlantının durumunu yansıtır. Bağlantının geçerli durumunu belirlemeniz gerekiyorsa engelleyici olmayan, sıfır bayt gönderme çağrısı yapın. Çağrı başarıyla döndürülüyorsa veya WAEWOULDBLOCK hata kodu (10035) atılıyorsa yuva hala bağlı demektir; aksi takdirde yuva artık bağlı değildir.
Bir Kullanıcı Veri Birimi Protokolü (UDP) yuvasında Connected çağırırsanızConnect, özelliği her zaman döndürürtrue
; ancak bu eylem UDP'nin doğal bağlantısız doğasını değiştirmez.