Socket.Poll(Int32, SelectMode) Methode

Definition

Bestimmt den Status des 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

Parameter

microSeconds
Int32

Die Zeit in Mikrosekunden, die auf eine Antwort gewartet werden soll.The time to wait for a response, in microseconds.

mode
SelectMode

Einer der SelectMode-Werte.One of the SelectMode values.

Gibt zurück

Der Status des Socket basierend auf dem im mode-Parameter übergebenen Abfragemoduswert.The status of the Socket based on the polling mode value passed in the mode parameter.

ModusMode RückgabewertReturn Value
SelectReadtrue, wenn Listen(Int32) aufgerufen wurde und eine Verbindung aussteht.true if Listen(Int32) has been called and a connection is pending; - oder --or- true, wenn Daten zum Lesen verfügbar sind.true if data is available for reading; - oder --or- true, wenn die Verbindung geschlossen, zurückgesetzt oder beendet wurde.true if the connection has been closed, reset, or terminated; Andernfalls wird false zurückgegeben.otherwise, returns false.
SelectWritetrue, wenn ein Connect(EndPoint) verarbeitet wird und die Verbindung erfolgreich war.true, if processing a Connect(EndPoint), and the connection has succeeded; - oder --or- true, wenn Daten gesendet werden können.true if data can be sent; Andernfalls wird false zurückgegeben.otherwise, returns false.
SelectErrortrue, wenn ein Connect(EndPoint) ohne Blockierung verarbeitet wird und der Verbindungsaufbau fehlgeschlagen ist.true if processing a Connect(EndPoint) that does not block, and the connection has failed; - oder --or- true, wenn OutOfBandInline nicht festgelegt ist und Out-of-Band-Daten verfügbar sind.true if OutOfBandInline is not set and out-of-band data is available; Andernfalls wird false zurückgegeben.otherwise, returns false.

Ausnahmen

Der mode-Parameter ist keiner der SelectMode-Werte.The mode parameter is not one of the SelectMode values.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket. Weitere Informationen finden Sie weiter unten im Abschnitt "Hinweise".See remarks below.

Der Socket wurde geschlossen.The Socket has been closed.

Beispiele

Das folgende Codebeispiel erstellt einen Socket, stellt eine Verbindung mit einem Server her und verwendet Poll, um den Status des Sockets zu überprüfen.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 

Hinweise

Mit der Poll-Methode wird der Status des Socketüberprüft.The Poll method will check the state of the Socket. Geben Sie SelectMode.SelectRead für den selectMode-Parameter an, um zu bestimmen, ob die Socket lesbar ist.Specify SelectMode.SelectRead for the selectMode parameter to determine if the Socket is readable. Geben Sie SelectMode.SelectWrite an, um zu bestimmen, ob die Socket schreibgeschützt ist.Specify SelectMode.SelectWrite to determine if the Socket is writable. Verwenden Sie SelectMode.SelectError, um eine Fehlerbedingung zu erkennen.Use SelectMode.SelectError to detect an error condition. Poll wird die Ausführung blockieren, bis der angegebene Zeitraum, gemessen in microseconds, abläuft.Poll will block execution until the specified time period, measured in microseconds, elapses. Legen Sie den microSeconds-Parameter auf eine negative Ganzzahl fest, wenn Sie unbegrenzt auf eine Antwort warten möchten.Set the microSeconds parameter to a negative integer if you would like to wait indefinitely for a response. Wenn Sie den Status mehrerer Sockets überprüfen möchten, empfiehlt es sich, die Select-Methode zu verwenden.If you want to check the status of multiple sockets, you might prefer to use the Select method.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Diese Methode kann bestimmte Arten von Verbindungsproblemen, wie z. b. ein fehlerhaftes Netzwerkkabel, nicht erkennen, oder der Remote Host wurde nicht ordnungsgemäß heruntergefahren.This method cannot detect certain kinds of connection problems, such as a broken network cable, or that the remote host was shut down ungracefully. Sie müssen versuchen, Daten zu senden oder zu empfangen, um diese Arten von Fehlern zu erkennen.You must attempt to send or receive data to detect these kinds of errors.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Gilt für:

Siehe auch