Sdílet prostřednictvím


Socket.GetSocketOption Metoda

Definice

Vrátí hodnotu Socket možnosti.

Přetížení

Name Description
GetSocketOption(SocketOptionLevel, SocketOptionName)

Vrátí hodnotu zadané Socket možnosti reprezentované jako objekt.

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Vrátí zadané Socket nastavení možnosti reprezentované jako pole bajtů.

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Vrátí hodnotu zadané Socket možnosti v matici.

GetSocketOption(SocketOptionLevel, SocketOptionName)

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

Vrátí hodnotu zadané Socket možnosti reprezentované jako objekt.

public:
 System::Object ^ GetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName);
public object? GetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName);
public object GetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName);
member this.GetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName -> obj
Public Function GetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName) As Object

Parametry

optionLevel
SocketOptionLevel

Jedna z SocketOptionLevel hodnot.

optionName
SocketOptionName

Jedna z SocketOptionName hodnot.

Návraty

Objekt, který představuje hodnotu možnosti. optionName Pokud je parametr nastaven na Linger návratovou hodnotu je instance LingerOption třídy. Pokud optionName je nastavena AddMembership nebo DropMembership, návratová hodnota je instance MulticastOption třídy. Pokud optionName je jakákoli jiná hodnota, návratová hodnota je celé číslo.

Výjimky

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

-or-

optionName byla nastavena na nepodporovanou hodnotu MaxConnections.

Ta Socket byla uzavřena.

Příklady

Následující příklad kódu načte LingerOption hodnoty a Send časové limity a zobrazí je v konzole.

Console.WriteLine("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));

// blocks until send returns
int i = s.Send(msg);

// blocks until read returns
byte[] bytes = new byte[1024];

s.Receive(bytes);

// Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes));
s.Shutdown(SocketShutdown.Both);
Console.WriteLine("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString());
s.Close();
    Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
    ' blocks until send returns
    Dim i As Integer = s.Send(msg)

    ' blocks until read returns
    Dim bytes(1024) As Byte
    s.Receive(bytes)

    'Display to the screen
    Console.WriteLine(Encoding.ASCII.GetString(bytes))
    s.Shutdown(SocketShutdown.Both)

    Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
    s.Close()
End Sub

Poznámky

Socket možnosti určují chování aktuálního Socket. Toto přetížení použijte k získání LingerAddMembership, a DropMembershipSocket možnosti. Pro tuto Linger možnost použijte Socket parametr optionLevel . Pro AddMembership a DropMembership, použít IP. Pokud chcete nastavit hodnotu některé z výše uvedených možností, použijte metodu SetSocketOption .

Poznámka:

Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby.

Poznámka:

Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

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

Vrátí zadané Socket nastavení možnosti reprezentované jako pole bajtů.

public:
 void GetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName, cli::array <System::Byte> ^ optionValue);
public void GetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, byte[] optionValue);
member this.GetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName * byte[] -> unit
Public Sub GetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName, optionValue As Byte())

Parametry

optionLevel
SocketOptionLevel

Jedna z SocketOptionLevel hodnot.

optionName
SocketOptionName

Jedna z SocketOptionName hodnot.

optionValue
Byte[]

Pole typu Byte , které má přijmout nastavení možnosti.

Výjimky

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

-or-

V aplikacích .NET Compact Framework je výchozí prostor vyrovnávací paměti systému Windows CE nastaven na 32768 bajtů. Prostor vyrovnávací paměti pro jednotlivé sokety můžete změnit voláním SetSocketOption.

Ta Socket byla uzavřena.

Příklady

Následující příklad kódu načte LingerOption hodnoty a Send časové limity a zobrazí je v konzole.

Console.WriteLine("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));

// blocks until send returns
int i = s.Send(msg);

// blocks until read returns
byte[] bytes = new byte[1024];

s.Receive(bytes);

// Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes));
s.Shutdown(SocketShutdown.Both);
Console.WriteLine("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString());
s.Close();
    Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
    ' blocks until send returns
    Dim i As Integer = s.Send(msg)

    ' blocks until read returns
    Dim bytes(1024) As Byte
    s.Receive(bytes)

    'Display to the screen
    Console.WriteLine(Encoding.ASCII.GetString(bytes))
    s.Shutdown(SocketShutdown.Both)

    Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
    s.Close()
End Sub

Poznámky

Socket možnosti určují chování aktuálního Socket. Po úspěšném dokončení této metody obsahuje pole určené parametrem optionValue hodnotu zadané Socket možnosti.

Pokud je délka optionValue pole menší než počet bajtů potřebných k uložení hodnoty zadané Socket možnosti, GetSocketOption vyvolá SocketExceptionchybu . Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby. Toto přetížení použijte pro všechny sokety, které jsou reprezentovány logickými hodnotami nebo celými čísly.

Poznámka:

Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

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

Vrátí hodnotu zadané Socket možnosti v matici.

public:
 cli::array <System::Byte> ^ GetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName, int optionLength);
public byte[] GetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, int optionLength);
member this.GetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName * int -> byte[]
Public Function GetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName, optionLength As Integer) As Byte()

Parametry

optionLevel
SocketOptionLevel

Jedna z SocketOptionLevel hodnot.

optionName
SocketOptionName

Jedna z SocketOptionName hodnot.

optionLength
Int32

Délka očekávané návratové hodnoty v bajtech.

Návraty

Byte[]

Pole typu Byte , které obsahuje hodnotu možnosti soketu.

Výjimky

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

-or-

V aplikacích .NET Compact Framework je výchozí prostor vyrovnávací paměti systému Windows CE nastaven na 32768 bajtů. Prostor vyrovnávací paměti pro jednotlivé sokety můžete změnit voláním SetSocketOption.

Ta Socket byla uzavřena.

Příklady

Následující příklad kódu načte LingerOption hodnoty a Send časové limity a zobrazí je v konzole.

Console.WriteLine("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));

// blocks until send returns
int i = s.Send(msg);

// blocks until read returns
byte[] bytes = new byte[1024];

s.Receive(bytes);

// Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes));
s.Shutdown(SocketShutdown.Both);
Console.WriteLine("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString());
s.Close();
    Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
    ' blocks until send returns
    Dim i As Integer = s.Send(msg)

    ' blocks until read returns
    Dim bytes(1024) As Byte
    s.Receive(bytes)

    'Display to the screen
    Console.WriteLine(Encoding.ASCII.GetString(bytes))
    s.Shutdown(SocketShutdown.Both)

    Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
    s.Close()
End Sub

Poznámky

Parametr optionLength nastaví maximální velikost vráceného bajtového pole. Pokud hodnota možnosti vyžaduje méně bajtů, bude pole obsahovat pouze tolik bajtů. Pokud hodnota možnosti vyžaduje více bajtů, GetSocketOption vyvolá chybu SocketException. Toto přetížení použijte pro všechny sokety, které jsou reprezentovány logickými hodnotami nebo celými čísly.

Poznámka:

Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby.

Poznámka:

Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro