Compartilhar via


Socket.Poll Método

Definição

Sobrecargas

Poll(TimeSpan, SelectMode)

Determina o status do Socket.

Poll(Int32, SelectMode)

Determina o status do Socket.

Poll(TimeSpan, SelectMode)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Determina o status do 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

Parâmetros

timeout
TimeSpan

O tempo para aguardar uma resposta.

mode
SelectMode

Um dos valores de SelectMode.

Retornos

O status do Socket com base no valor de modo de sondagem passado no parâmetro mode. Retornará true se qualquer uma das condições a seguir ocorrer antes da timeout expiração, caso contrário, false.

  • Para SelectRead, ele retornará true se Listen() tiver sido chamado e uma conexão estiver pendente, se os dados estiverem disponíveis para leitura ou se a conexão tiver sido fechada, redefinida ou encerrada.
  • Para SelectWrite, ele retornará true se o processamento de um Connect e a conexão tiverem sido bem-sucedidos ou se os dados puderem ser enviados.
  • Para SelectError, ele retornará true se o processamento de um Connect que não bloquear e a conexão falhar ou se OutOfBandInline não estiver definido e os dados fora de banda estiverem disponíveis.
  • Caso contrário, ele retornará false.

Exceções

timeout é menor que -1 milissegundos ou maior que MaxValue milissegundos.

Ocorreu um erro ao tentar acessar o soquete.

Aplica-se a

Poll(Int32, SelectMode)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Determina o status do 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

Parâmetros

microSeconds
Int32

O tempo de espera por uma resposta, em microssegundos.

mode
SelectMode

Um dos valores de SelectMode.

Retornos

O status do Socket com base no valor de modo de sondagem passado no parâmetro mode.

  • Para SelectRead, ele retornará true se Listen() tiver sido chamado e uma conexão estiver pendente, se os dados estiverem disponíveis para leitura ou se a conexão tiver sido fechada, redefinida ou encerrada.
  • Para SelectWrite, ele retornará true se o processamento de um Connect e a conexão tiverem sido bem-sucedidos ou se os dados puderem ser enviados.
  • Para SelectError, ele retornará true se o processamento de um Connect que não bloquear e a conexão falhar ou se OutOfBandInline não estiver definido e os dados fora de banda estiverem disponíveis.
  • Caso contrário, ele retornará false.

Exceções

O parâmetro mode não é um dos valores SelectMode.

Ocorreu um erro ao tentar acessar o soquete. Consulte os comentários abaixo.

Exemplos

O exemplo de código a seguir cria um soquete, conecta-se a um servidor e usa Poll para marcar o status do soquete.

//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

Comentários

O Poll método verifica o estado do Socket. Especifique SelectMode.SelectRead para o selectMode parâmetro para determinar se o Socket é legível. Especifique SelectMode.SelectWrite para determinar se o Socket é gravável. Use SelectMode.SelectError para detectar uma condição de erro. Poll bloqueará a execução até que o período de tempo especificado, medido em microseconds, decorridos ou dados se torne disponível. Defina o microSeconds parâmetro como um inteiro negativo se você quiser esperar indefinidamente por uma resposta. Se você quiser marcar o status de vários soquetes, talvez prefira usar o Select método .

Observação

Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.

Observação

Esse método não pode detectar determinados tipos de problemas de conexão, como um cabo de rede quebrado, ou que o host remoto foi desligado sem êxito. Você deve tentar enviar ou receber dados para detectar esses tipos de erros.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Confira também

Aplica-se a