Sdílet prostřednictvím


Socket.Poll Metoda

Definice

Přetížení

Poll(TimeSpan, SelectMode)

Určuje stav .Socket

Poll(Int32, SelectMode)

Určuje stav .Socket

Poll(TimeSpan, SelectMode)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Určuje stav .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

Parametry

timeout
TimeSpan

Doba čekání na odpověď.

mode
SelectMode

Jedna z SelectMode hodnot.

Návraty

Stav hodnoty Socket na základě hodnoty režimu dotazování předanou v parametru mode . Vrátí, true pokud před vypršením timeout platnosti nastane některá z následujících podmínek, v opačném případě false.

  • Pro SelectReadvrátí true , pokud Listen() bylo volána a připojení čeká na vyřízení, pokud jsou data k dispozici pro čtení nebo pokud bylo připojení ukončeno, resetováno nebo ukončeno.
  • Pro SelectWritevrátí true , pokud zpracování Connect a a připojení bylo úspěšné nebo pokud je možné odeslat data.
  • Pro SelectErrorvrátí true , pokud zpracování Connect , které neblokuje a připojení selhalo, nebo pokud OutOfBandInline není nastaveno a jsou k dispozici mimo pásmo dat.
  • V opačném případě vrátí false.

Výjimky

timeout je menší než -1 milisekund nebo větší než MaxValue milisekundy.

Při pokusu o přístup k soketu došlo k chybě.

Platí pro

Poll(Int32, SelectMode)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Určuje stav .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

Parametry

microSeconds
Int32

Doba čekání na odpověď v mikrosekundách.

mode
SelectMode

Jedna z SelectMode hodnot.

Návraty

Stav hodnoty Socket na základě hodnoty režimu dotazování předanou v parametru mode .

  • Pro SelectReadvrátí true , pokud Listen() bylo volána a připojení čeká na vyřízení, pokud jsou data k dispozici pro čtení nebo pokud bylo připojení ukončeno, resetováno nebo ukončeno.
  • Pro SelectWritevrátí true , pokud zpracování Connect a a připojení bylo úspěšné nebo pokud je možné odeslat data.
  • Pro SelectErrorvrátí true , pokud zpracování Connect , které neblokuje a připojení selhalo, nebo pokud OutOfBandInline není nastaveno a jsou k dispozici mimo pásmo dat.
  • V opačném případě vrátí false.

Výjimky

Parametr mode není jednou z SelectMode hodnot.

Při pokusu o přístup k soketu došlo k chybě. Viz poznámky níže.

Příklady

Následující příklad kódu vytvoří soket, připojí se k serveru a použije Poll ke kontrole stavu soketu.

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

Poznámky

Metoda Poll kontroluje stav Socket. Zadáním SelectMode.SelectRead parametru selectMode určíte, jestli Socket je čitelný. Zadáním SelectMode.SelectWrite určíte, jestli Socket je zapisovatelný. Slouží SelectMode.SelectError ke zjištění chybového stavu. Poll bude blokovat provádění, dokud nebude k dispozici zadané časové období měřené v microsecondshodnotě , uplynuly nebo budou k dispozici data. microSeconds Pokud chcete na odpověď čekat neomezeně dlouho, nastavte parametr na záporné celé číslo. Pokud chcete zkontrolovat stav více soketů, můžete raději použít metodu Select .

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Poznámka

Tato metoda nemůže rozpoznat určité druhy problémů s připojením, například poškozený síťový kabel nebo že vzdálený hostitel byl nechtěně vypnut. Pokud chcete zjistit tyto druhy chyb, musíte se pokusit odeslat nebo přijmout data.

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro