Socket.Poll(Int32, SelectMode) Método

Definição

Determina o status do Socket.Determines the status of the 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.The time to wait for a response, in microseconds.

mode
SelectMode

Um dos valores de SelectMode.One of the SelectMode values.

Retornos

Boolean

O status do Socket com base no valor de modo de sondagem passado no parâmetro mode.The status of the Socket based on the polling mode value passed in the mode parameter.

ModoMode Valor de retornoReturn Value
SelectReadtrue se Listen(Int32) foi chamado e uma conexão estiver pendente;true if Listen(Int32) has been called and a connection is pending; - ou --or- true se os dados estiverem disponíveis para leitura;true if data is available for reading; - ou --or- true se a conexão foi fechada, redefinida ou terminada;true if the connection has been closed, reset, or terminated; caso contrário, retornará false.otherwise, returns false.
SelectWritetrue, se houver processamento de um Connect(EndPoint) e a conexão foi bem-sucedida;true, if processing a Connect(EndPoint), and the connection has succeeded; - ou --or- true se for possível enviar os dados;true if data can be sent; caso contrário, retornará false.otherwise, returns false.
SelectErrortrue se o processamento de um Connect(EndPoint) que não é bloqueado e a conexão tiver falhado;true if processing a Connect(EndPoint) that does not block, and the connection has failed; - ou --or- true se OutOfBandInline não estiver definido e dados fora de banda estiverem disponíveis;true if OutOfBandInline is not set and out-of-band data is available; caso contrário, retornará false.otherwise, returns false.

Exceções

O parâmetro mode não é um dos valores SelectMode.The mode parameter is not one of the SelectMode values.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket. Consulte os comentários abaixo.See remarks below.

O Socket foi fechado.The Socket has been closed.

Exemplos

O exemplo de código a seguir cria um soquete, conecta-se a um servidor e usa Poll para verificar o status do soquete.The following code example creates a socket, connects to a server, and uses Poll to check the status of the socket.

//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 verificará o estado do Socket .The Poll method will check the state of the Socket. Especifique SelectMode.SelectRead para o selectMode parâmetro para determinar se o Socket é legível.Specify SelectMode.SelectRead for the selectMode parameter to determine if the Socket is readable. Especifique SelectMode.SelectWrite para determinar se o Socket é gravável.Specify SelectMode.SelectWrite to determine if the Socket is writable. Use SelectMode.SelectError para detectar uma condição de erro.Use SelectMode.SelectError to detect an error condition. Poll bloqueará a execução até o período de tempo especificado, medido em microseconds , decorrido.Poll will block execution until the specified time period, measured in microseconds, elapses. Defina o microSeconds parâmetro como um inteiro negativo se você quiser aguardar indefinidamente uma resposta.Set the microSeconds parameter to a negative integer if you would like to wait indefinitely for a response. Se você quiser verificar o status de vários soquetes, talvez prefira usar o Select método.If you want to check the status of multiple sockets, you might prefer to use the Select method.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

Esse método não pode detectar certos tipos de problemas de conexão, como um cabo de rede quebrado, ou que o host remoto foi desligado de forma innormal.This method cannot detect certain kinds of connection problems, such as a broken network cable, or that the remote host was shut down ungracefully. Você deve tentar enviar ou receber dados para detectar esses tipos de erros.You must attempt to send or receive data to detect these kinds of errors.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Aplica-se a

Confira também