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.