Sdílet prostřednictvím


Socket.GetSocketOption Metoda

Definice

Vrátí hodnotu Socket možnosti.

Přetížení

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 poli.

GetSocketOption(SocketOptionLevel, SocketOptionName)

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

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

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ě.

-nebo-

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

Příklady

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

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

// Blocks until send returns.
int i = s->Send(msg);

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive(bytes);

// Displays to the screen.
Console::WriteLine(Encoding::ASCII->GetString(bytes));
s->Shutdown(SocketShutdown::Both);
Console::Write("If data remains to be sent, this application will stay open for ");
Console::WriteLine(safe_cast<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
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 Socketobjektu . Po úspěšném dokončení této metody obsahuje pole zadané 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á SocketExceptionse . 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 . 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 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

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

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

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

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ě.

-nebo-

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

Příklady

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

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

// Blocks until send returns.
int i = s->Send(msg);

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive(bytes);

// Displays to the screen.
Console::WriteLine(Encoding::ASCII->GetString(bytes));
s->Shutdown(SocketShutdown::Both);
Console::Write("If data remains to be sent, this application will stay open for ");
Console::WriteLine(safe_cast<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
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 pole bajtů. Pokud hodnota možnosti vyžaduje méně bajtů, bude pole obsahovat pouze tento počet 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í 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

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

GetSocketOption(SocketOptionLevel, SocketOptionName)

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 Když je parametr nastaven na Linger návratovou hodnotu je instance LingerOption třídy. Pokud optionName je nastavena na AddMembership nebo DropMembership, návratová hodnota je instancí 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ě.

-nebo-

optionName byla nastavena na nepodporovanou hodnotu MaxConnections.

Příklady

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

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

// Blocks until send returns.
int i = s->Send(msg);

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive(bytes);

// Displays to the screen.
Console::WriteLine(Encoding::ASCII->GetString(bytes));
s->Shutdown(SocketShutdown::Both);
Console::Write("If data remains to be sent, this application will stay open for ");
Console::WriteLine(safe_cast<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
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 Socketobjektu . Pomocí tohoto přetížení získáte Lingermožnosti , AddMembershipa DropMembershipSocket . Linger Jako možnost použijte Socket parametr optionLevel . Pro AddMembership a DropMembershippoužijte IP. Pokud chcete nastavit hodnotu některé z výše uvedených možností, použijte metodu SetSocketOption .

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

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