次の方法で共有


Socket.Poll メソッド

定義

オーバーロード

名前 説明
Poll(TimeSpan, SelectMode)

Socketの状態を決定します。

Poll(Int32, SelectMode)

Socketの状態を決定します。

Poll(TimeSpan, SelectMode)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

Socketの状態を決定します。

public:
 bool Poll(TimeSpan timeout, System::Net::Sockets::SelectMode mode);
public bool Poll(TimeSpan timeout, System.Net.Sockets.SelectMode mode);
member this.Poll : TimeSpan * System.Net.Sockets.SelectMode -> bool
Public Function Poll (timeout As TimeSpan, mode As SelectMode) As Boolean

パラメーター

timeout
TimeSpan

応答を待機する時間。

mode
SelectMode

SelectMode値の 1 つ。

返品

mode パラメーターで渡されたポーリング モードの値に基づくSocketの状態。 timeoutが期限切れになる前に次のいずれかの条件が発生した場合はtrueを返します。それ以外の場合はfalse

  • SelectReadでは、Listen()が呼び出され、接続が保留中の場合、データが読み取り可能な場合、または接続が閉じられている、リセット、または終了された場合に、trueが返されます。
  • SelectWriteの場合、Connectの処理に成功した場合、またはデータを送信できる場合は、trueが返されます。
  • SelectErrorでは、ブロックされていないConnectの処理が失敗した場合、またはOutOfBandInlineが設定されておらず、帯域外データが使用可能な場合は、trueが返されます。
  • それ以外の場合は falseを返します。

例外

timeout が -1 ミリ秒未満か、 MaxValue ミリ秒を超える値です。

ソケットにアクセスしようとしたときにエラーが発生しました。

Socketが閉じられました。

適用対象

Poll(Int32, SelectMode)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

Socketの状態を決定します。

public:
 bool Poll(int microSeconds, System::Net::Sockets::SelectMode mode);
public bool Poll(int microSeconds, System.Net.Sockets.SelectMode mode);
member this.Poll : int * System.Net.Sockets.SelectMode -> bool
Public Function Poll (microSeconds As Integer, mode As SelectMode) As Boolean

パラメーター

microSeconds
Int32

応答を待機する時間 (マイクロ秒単位)。

mode
SelectMode

SelectMode値の 1 つ。

返品

mode パラメーターで渡されたポーリング モードの値に基づくSocketの状態。

  • SelectReadでは、Listen()が呼び出され、接続が保留中の場合、データが読み取り可能な場合、または接続が閉じられている、リセット、または終了された場合に、trueが返されます。
  • SelectWriteの場合、Connectの処理に成功した場合、またはデータを送信できる場合は、trueが返されます。
  • SelectErrorでは、ブロックされていないConnectの処理が失敗した場合、またはOutOfBandInlineが設定されておらず、帯域外データが使用可能な場合は、trueが返されます。
  • それ以外の場合は falseを返します。

例外

mode パラメーターは、SelectMode値の 1 つではありません。

ソケットにアクセスしようとしたときにエラーが発生しました。 以下の解説を参照してください。

Socketが閉じられました。

次のコード例では、ソケットを作成し、サーバーに接続し、 Poll を使用してソケットの状態を確認します。

//Creates the Socket for sending data over TCP.
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
   ProtocolType.Tcp );

// Connects to host using IPEndPoint.
s.Connect(EPhost);
if (!s.Connected)
{
   strRetPage = "Unable to connect to host";
}
// Use the SelectWrite enumeration to obtain Socket status.
 if(s.Poll(-1, SelectMode.SelectWrite)){
      Console.WriteLine("This Socket is writable.");
 }
 else if (s.Poll(-1, SelectMode.SelectRead)){
       Console.WriteLine("This Socket is readable." );
 }
 else if (s.Poll(-1, SelectMode.SelectError)){
      Console.WriteLine("This Socket has an error.");
 }
'Creates the Socket for sending data over TCP.
Dim s As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

' Connects to host using IPEndPoint.
s.Connect(EPhost)
If Not s.Connected Then
   strRetPage = "Unable to connect to host"
End If
' Use the SelectWrite enumeration to obtain Socket status.
If s.Poll(- 1, SelectMode.SelectWrite) Then
   Console.WriteLine("This Socket is writable.")
Else
   If s.Poll(- 1, SelectMode.SelectRead) Then
      Console.WriteLine(("This Socket is readable. "))
   Else
      If s.Poll(- 1, SelectMode.SelectError) Then
         Console.WriteLine("This Socket has an error.")
      End If
   End If 
End If

注釈

Poll メソッドは、Socketの状態を確認します。 Socketが読み取り可能かどうかを判断するには、selectMode パラメーターのSelectMode.SelectReadを指定します。 Socketが書き込み可能かどうかを判断するには、SelectMode.SelectWriteを指定します。 SelectMode.SelectErrorを使用してエラー状態を検出します。 Poll は、指定した期間 ( microsecondsで測定) が経過するか、データが使用可能になるまで実行をブロックします。 応答を無期限に待機する場合は、 microSeconds パラメーターを負の整数に設定します。 複数のソケットの状態を確認する場合は、 Select メソッドを使用することをお選びになる場合があります。

SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 の API エラー コード のドキュメントを参照してください。

この方法では、ネットワーク ケーブルの破損やリモート ホストが正常にシャットダウンされたなど、特定の種類の接続の問題を検出できません。 このようなエラーを検出するには、データの送受信を試みる必要があります。

このメンバーは、アプリケーションでネットワーク トレースを有効にすると、トレース情報を出力します。 詳細については、「 .NET Framework でのネットワーク トレース」を参照してください。

こちらもご覧ください

適用対象