Socket.Poll Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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ě.
Byl Socket zavřený.
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.
Byl Socket zavřený.
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 microseconds
hodnotě , 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.