Socket.Connected プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
public:
property bool Connected { bool get(); };
public bool Connected { get; }
member this.Connected : bool
Public ReadOnly Property Connected As Boolean
プロパティ値
最後に実行された操作の時点で、Socket がリモート リソースに接続されていた場合は true
。それ以外の場合は false
。
例
次のコード例では、リモート エンドポイントに接続し、 プロパティを Connected チェックし、接続の現在の状態を確認します。
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
注釈
プロパティは Connected
、最後の Socket I/O 操作の 時点での の接続状態を取得します。 が返 false
されると、 Socket は接続されなかったか、接続されなくなりました。
Connected
はスレッド セーフではありません。が別のスレッドから切断されると、操作が中止された後に Socket が返true
される場合があります。
プロパティの値は、 Connected 最新の操作の時点での接続の状態を反映します。 接続の現在の状態を確認する必要がある場合は、非ブロッキングの 0 バイトの Send 呼び出しを行います。 呼び出しが正常に返されるか、WAEWOULDBLOCK エラー コード (10035) をスローした場合でも、ソケットは接続されています。それ以外の場合、ソケットは接続されなくなります。
ユーザー データグラム プロトコル (UDP) ソケットで を呼び出 Connect すと、 Connected プロパティは常に を返 true
します。ただし、このアクションによって UDP の本質的なコネクションレスの性質は変更されません。
適用対象
.NET