Прочитать на английском

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


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);

Параметры

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 был закрыт.

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

Poll(Int32, SelectMode)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

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

public bool Poll(int microSeconds, System.Net.Sockets.SelectMode mode);

Параметры

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 = 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.");
 }

Комментарии

Метод Poll проверяет состояние Socket. Укажите SelectMode.SelectRead для selectMode параметра , чтобы определить, является ли Socket объект удобочитаемым. Укажите SelectMode.SelectWrite , чтобы определить, доступен ли Socket объект для записи. Используйте SelectMode.SelectError для обнаружения условия ошибки. Poll заблокирует выполнение до тех пор, пока не станет доступным указанный период времени, измеряемый в microseconds, истекает или данные. Присвойте microSeconds параметру отрицательное целое число, если вы хотите ждать ответа неограниченное время. Если вы хотите проверка состояние нескольких сокетов, можно использовать Select метод .

Примечание

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

Примечание

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

Примечание

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1