Socket.Poll(Int32, SelectMode) Método

Definición

Determina el estado de 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

Tiempo para esperar una respuesta, en microsegundos.

mode
SelectMode

Uno de los SelectMode valores.

Devoluciones

El estado de Socket en función del valor del modo de sondeo pasado en el mode parámetro .

  • Para SelectRead, devuelve true si Listen() se ha llamado a y hay una conexión pendiente, si los datos están disponibles para su lectura, o si la conexión se ha cerrado, restablecido o finalizado.
  • Para SelectWrite, devuelve true si el procesamiento de y Connect la conexión se ha realizado correctamente o si se pueden enviar datos.
  • Para SelectError, devuelve true si el procesamiento de un Connect que no bloquea y la conexión ha fallado, o si OutOfBandInline no está establecido y los datos fuera de banda están disponibles.
  • En caso contrario, devuelve false.

Excepciones

El mode parámetro no es uno de los SelectMode valores.

Error al intentar acceder al socket. Vea los comentarios a continuación.

Ejemplos

En el ejemplo de código siguiente se crea un socket, se conecta a un servidor y se usa Poll para comprobar el estado del socket.

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

Comentarios

El Poll método comprueba el estado de .Socket Especifique SelectMode.SelectRead para el selectMode parámetro para determinar si es Socket legible. Especifique SelectMode.SelectWrite para determinar si se Socket puede escribir . Use SelectMode.SelectError para detectar una condición de error. Poll bloqueará la ejecución hasta que el período de tiempo especificado, medido en microseconds, transcurre o los datos estarán disponibles. Establezca el microSeconds parámetro en un entero negativo si desea esperar indefinidamente una respuesta. Si desea comprobar el estado de varios sockets, puede que prefiera usar el Select método .

Note

Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.

Note

Este método no puede detectar ciertos tipos de problemas de conexión, como un cable de red roto o que el host remoto se cerró de forma incorrecta. Debe intentar enviar o recibir datos para detectar estos tipos de errores.

Note

Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, vea Network Tracing in .NET Framework.

Se aplica a

Consulte también