Socket.Poll(Int32, SelectMode) メソッド

定義

Socket の状態を確認します。Determines the status of the 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

マイクロ秒単位の待機時間。The time to wait for a response, in microseconds.

mode
SelectMode

SelectMode 値のいずれか 1 つ。One of the SelectMode values.

戻り値

Boolean

mode パラメーターで渡されるポーリング モードの値に基づいた Socket の状態。The status of the Socket based on the polling mode value passed in the mode parameter.

モードMode 戻り値Return Value
SelectReadListen(Int32) が呼び出されており、接続が保留中の場合は truetrue if Listen(Int32) has been called and a connection is pending; - または --or- データを読み取ることができる場合は truetrue if data is available for reading; - または --or- 接続が閉じている、リセットされている、または終了している場合は truetrue if the connection has been closed, reset, or terminated; それ以外の場合、false を返します。otherwise, returns false.
SelectWriteConnect(EndPoint) を処理し、接続に成功した場合は truetrue, if processing a Connect(EndPoint), and the connection has succeeded; - または --or- データを送信できる場合は truetrue if data can be sent; それ以外の場合、false を返します。otherwise, returns false.
SelectErrorブロックしない Connect(EndPoint) を処理し、接続に失敗した場合は truetrue if processing a Connect(EndPoint) that does not block, and the connection has failed; - または --or- OutOfBandInline が設定されておらず、帯域外データを使用できる場合は truetrue if OutOfBandInline is not set and out-of-band data is available; それ以外の場合、false を返します。otherwise, returns false.

例外

mode パラメーターが、SelectMode 値の 1 つではありません。The mode parameter is not one of the SelectMode values.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket. 以下の解説を参照してください。See remarks below.

Socket が閉じられました。The Socket has been closed.

次のコード例では、ソケットを作成し、サーバーに接続して、を使用して Poll ソケットの状態を確認します。The following code example creates a socket, connects to a server, and uses Poll to check the status of the socket.

//Creates the Socket for sending data over TCP.
Socket^ s = gcnew 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.
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 ます。The Poll method will check the state of the Socket. SelectMode.SelectRead selectMode が読み取り可能かどうかを判断するには、パラメーターにを指定し Socket ます。Specify SelectMode.SelectRead for the selectMode parameter to determine if the Socket is readable. SelectMode.SelectWriteが書き込み可能かどうかを判断するには、を指定し Socket ます。Specify SelectMode.SelectWrite to determine if the Socket is writable. SelectMode.SelectErrorエラー状態を検出するには、を使用します。Use SelectMode.SelectError to detect an error condition. Poll は、指定された期間 (で測定) が経過するまで実行 microseconds をブロックします。Poll will block execution until the specified time period, measured in microseconds, elapses. 応答を microSeconds 無期限に待機する場合は、パラメーターを負の整数に設定します。Set the microSeconds parameter to a negative integer if you would like to wait indefinitely for a response. 複数のソケットの状態を確認する場合は、メソッドを使用することをお勧め Select します。If you want to check the status of multiple sockets, you might prefer to use the Select method.

注意

を受け取った場合は、プロパティを使用して、 SocketException SocketException.ErrorCode 特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコード のドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

この方法では、ネットワークケーブルの切断など、特定の種類の接続の問題を検出することはできません。また、リモートホストが異常終了をシャットダウンしたことを確認することもできません。This method cannot detect certain kinds of connection problems, such as a broken network cable, or that the remote host was shut down ungracefully. これらの種類のエラーを検出するには、データの送信または受信を試みる必要があります。You must attempt to send or receive data to detect these kinds of errors.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

適用対象

こちらもご覧ください