Socket.Poll Метод

Определение

Перегрузки

Poll(TimeSpan, SelectMode)

Определяет состояние объекта Socket.

Poll(Int32, SelectMode)

Определяет состояние объекта Socket.

Poll(TimeSpan, SelectMode)

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

Возвращаемое значение

Состояние объекта Socket, основанное на значении режима опроса, переданного в параметре mode. Возвращает значение true , если любое из следующих условий timeout возникает до истечения срока действия. В противном случае false— значение .

  • Для SelectReadон возвращает значение true , если Listen() был вызван и соединение находится в состоянии ожидания, если данные доступны для чтения, или если соединение было закрыто, сброшено или прервано.
  • Для SelectWriteон возвращает значение true , если обработка Connect и подключение выполнено успешно или если данные можно отправить.
  • Для SelectErrorон возвращает значение true , если обработка Connect объекта , который не блокируется и подключение завершилось сбоем, или если OutOfBandInline не задано и данные вне диапазона доступны.
  • В противном случае она возвращает false.

Исключения

timeout значение меньше -1 миллисекунда или больше MaxValue миллисекунда.

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

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

Poll(Int32, SelectMode)

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

Возвращаемое значение

Состояние объекта Socket, основанное на значении режима опроса, переданного в параметре mode.

  • Для SelectReadон возвращает значение true , если Listen() был вызван и соединение находится в состоянии ожидания, если данные доступны для чтения, или если соединение было закрыто, сброшено или прервано.
  • Для SelectWriteон возвращает значение true , если обработка Connect и подключение выполнено успешно или если данные можно отправить.
  • Для SelectErrorон возвращает значение true , если обработка Connect объекта , который не блокируется и подключение завершилось сбоем, или если OutOfBandInline не задано и данные вне диапазона доступны.
  • В противном случае она возвращает false.

Исключения

Параметр mode не является одним из значений SelectMode.

Произошла ошибка при попытке доступа к сокету. См. примечания ниже.

Socket был закрыт.

Примеры

В следующем примере кода создается сокет, подключается к серверу и используется Poll для проверка состояния сокета.

//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объекта . Укажите SelectMode.SelectRead для selectMode параметра , чтобы определить, является ли Socket объект удобочитаемым. Укажите SelectMode.SelectWrite , чтобы определить, доступен ли Socket объект для записи. Используйте SelectMode.SelectError для обнаружения условия ошибки. Poll заблокирует выполнение до тех пор, пока не станет доступным указанный период времени, измеряемый в microseconds, или до тех пор, пока не станут доступны данные. Задайте для microSeconds параметра отрицательное целое число, если вы хотите бесконечно ждать ответа. Если вы хотите проверка состояние нескольких сокетов, можно использовать Select метод .

Примечание

Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

Примечание

Этот метод не может обнаружить определенные проблемы с подключением, такие как сломанный сетевой кабель или то, что удаленный узел был выключен ненормальным образом. Для обнаружения таких ошибок необходимо попытаться отправить или получить данные.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.

См. также раздел

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