Поделиться через


Socket.Poll Метод

Определение

Перегрузки

Poll(TimeSpan, SelectMode)

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

Poll(Int32, SelectMode)

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

Poll(TimeSpan, SelectMode)

Исходный код:
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.

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

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

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

Исключения

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

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

Socket был закрыт.

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

Poll(Int32, SelectMode)

Исходный код:
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.

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

Состояние объекта 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.

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

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