Socket.Poll(Int32, SelectMode) Socket.Poll(Int32, SelectMode) Socket.Poll(Int32, SelectMode) Socket.Poll(Int32, SelectMode) Method

Определение

Определяет состояние объекта 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 Int32 Int32 Int32

Время ожидания ответа, заданное в микросекундах.The time to wait for a response, in microseconds.

mode
SelectMode SelectMode SelectMode SelectMode

Одно из значений перечисления SelectMode.One of the SelectMode values.

Возвраты

Состояние объекта Socket, основанное на значении режима опроса, переданного в параметре mode.The status of the Socket based on the polling mode value passed in the mode parameter.

РежимMode Возвращаемое значениеReturn Value
SelectReadЗначение true, если был вызван метод Listen(Int32) и подключение отложено;true if Listen(Int32) has been called and a connection is pending; - или --or- Значение true, если данные доступны для чтения;true if data is available for reading; - или --or- Значение true, если подключение закрыто, сброшено или завершено.true if the connection has been closed, reset, or terminated; В противном случае, возвращает значение false.otherwise, returns false.
SelectWriteЗначение true, если обработка метода Connect(EndPoint) и подключения завершились успешно;true, if processing a Connect(EndPoint), and the connection has succeeded; -или--or- Значение true, если данные могут быть посланы;true if data can be sent; В противном случае, возвращает значение false.otherwise, returns false.
SelectErrorЗначение true, если не блокируется обработка метода Connect(EndPoint) и попытка подключения завершилась неудачей;true if processing a Connect(EndPoint) that does not block, and the connection has failed; - или --or- Значение true, если не установлен объект OutOfBandInline и доступны экстренные данные;true if OutOfBandInline is not set and out-of-band data is available; В противном случае, возвращает значение false.otherwise, returns false.

Исключения

Параметр mode не является одним из значений SelectMode.The mode parameter is not one of the SelectMode values.

Произошла ошибка при попытке доступа к сокету.An error occurred when attempting to access the socket. См. примечания ниже.See remarks below.

Примеры

В следующем примере кода создается сокет, подключается к серверу и используется 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 

Комментарии

Метод проверит состояние Socketобъекта. PollThe Poll method will check the state of the Socket. Укажите SelectMode.SelectRead Socket для параметра, чтобы определить, является ли объект доступным для чтения. selectModeSpecify 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. Если вы хотите ждать ответа в течение неограниченного времени, задайте для параметраотрицательноецелоечисло.microSecondsSet 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. После получения этого кода обратитесь к документации по коду ошибки API Windows Sockets версии 2 для получения подробного описания ошибки.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.

Применяется к

Дополнительно