Socket のステータスを確認します。
Public Function Poll( _
ByVal microSeconds As Integer, _ ByVal mode As SelectMode _) As Boolean
[C#]
public bool Poll(intmicroSeconds,SelectModemode);
[C++]
public: bool Poll(intmicroSeconds,SelectModemode);
[JScript]
public function Poll(
microSeconds : int,mode : SelectMode) : Boolean;
パラメータ
- microSeconds
マイクロ秒単位の待機時間。 - mode
SelectMode 値の 1 つ。
戻り値
モード | 戻り値 |
---|---|
SelectRead | Listen が呼び出されており、接続が保留中の場合は true 。
または データを読み取ることができる場合は true 。 または 接続が閉じている、リセットされている、または終了している場合は true 。 それ以外の場合は、 false を返します。 |
SelectWrite | Connect を処理し、接続に成功した場合は true 。
または データを送信できる場合は true 。 それ以外の場合は、 false を返します。 |
SelectError | ブロックしない Connect を処理し、接続に失敗した場合は true 。
または OutOfBandInline が設定されておらず、帯域外データを使用できる場合は true 。 それ以外の場合は、 false を返します。 |
例外
例外の種類 | 条件 |
---|---|
NotSupportedException | mode パラメータが、 SelectMode 値の 1 つではありません。 |
SocketException | ソケットへのアクセスを試みているときにエラーが発生しました。以下の解説を参照してください。 |
ObjectDisposedException | Socket は閉じられています。 |
解説
Poll メソッドは Socket の状態を確認します。 selectMode パラメータに SelectMode.SelectRead を指定して、 Socket が読み取り可能かどうかを確認します。 SelectMode.SelectWrite を指定して、 Socket が書き込み可能かどうかを確認します。 SelectMode.SelectError を使用してエラー条件を検出します。 Poll は、指定した時間 (microseconds 単位) が経過するまで実行をブロックします。応答に対して無制限に待機する場合は、 microSeconds パラメータを負の整数に設定します。複数ソケットの状態を確認する場合は、 Select を使用するとよいでしょう。
メモ SocketException が発生した場合は、 SocketException.ErrorCode を使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。
使用例
'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 should not print. Because this is not a listening Socket," + " no incoming connecton requests are expected. "))
Else
If s.Poll(- 1, SelectMode.SelectError) Then
Console.WriteLine("This Socket has an error.")
End If
End If
[C#]
//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 should not print. Because this is not a listening Socket," +
" no incoming connecton requests are expected. " );
}
else if (s.Poll(-1, SelectMode.SelectError)){
Console.WriteLine("This Socket has an error.");
}
[C++]
//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 = S"Unable to connect to host";
}
// Use the SelectWrite enumeration to obtain Socket status.
if (s->Poll(-1, SelectMode::SelectWrite)) {
Console::WriteLine(S"This Socket is writable.");
} else if (s->Poll(-1, SelectMode::SelectRead)) {
Console::WriteLine(S"This should not print. Because this is not a listening Socket, "
S" no incoming connecton requests are expected.");
} else if (s->Poll(-1, SelectMode::SelectError)) {
Console::WriteLine(S"This Socket has an error.");
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
Socket クラス | Socket メンバ | System.Net.Sockets 名前空間 | SelectMode | Poll