Socket.GetSocketOption Метод

Определение

Возвращает значение параметра Socket.

Перегрузки

GetSocketOption(SocketOptionLevel, SocketOptionName)

Возвращает значение указанного параметра Socket, представленного в виде объекта.

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Возвращает указанное значение параметра Socket, представленного в виде байтового массива.

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Возвращает значение указанного параметра Socket в массиве.

GetSocketOption(SocketOptionLevel, SocketOptionName)

Возвращает значение указанного параметра Socket, представленного в виде объекта.

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

Параметры

optionLevel
SocketOptionLevel

Одно из значений перечисления SocketOptionLevel.

optionName
SocketOptionName

Одно из значений перечисления SocketOptionName.

Возвращаемое значение

Object

Объект, который представляет значение параметра. Когда для параметра optionName установлено значение Linger, возвращаемое значение является экземпляром класса LingerOption. Когда для параметра optionName задано значение AddMembership или DropMembership, возвращаемое значение является экземпляром класса MulticastOption. Когда для параметра optionName задано любое другое значение, возвращаемое значение является целым числом.

Исключения

Произошла ошибка при попытке доступа к сокету.

-или-

Для параметра optionName было установлено неподдерживаемое значение MaxConnections.

Socket был закрыт.

Примеры

В следующем примере кода извлекаются LingerOption Send значения времени ожидания и отображаются в консоли.

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

Комментарии

Socket параметры определяют поведение текущего объекта Socket . Используйте эту перегрузку для Linger получения AddMembership параметров, и DropMembership Socket . Для Linger параметра используйте Socket для optionLevel параметра. Для AddMembership и DropMembership Используйте IP . Если вы хотите задать значение любого из перечисленных выше параметров, используйте SetSocketOption метод.

Примечание

Если вы получаете SocketException , используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки. после получения этого кода ознакомьтесь с подробным описанием ошибки в документации по коду ошибки API Windows sockets версии 2 .

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. дополнительные сведения см. в разделе сетевая трассировка в платформа .NET Framework.

См. также раздел

Применяется к

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Возвращает указанное значение параметра Socket, представленного в виде байтового массива.

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())

Параметры

optionLevel
SocketOptionLevel

Одно из значений перечисления SocketOptionLevel.

optionName
SocketOptionName

Одно из значений перечисления SocketOptionName.

optionValue
Byte[]

Массив типа Byte, который используется для отправки значения параметра.

Исключения

Произошла ошибка при попытке доступа к сокету.

-или-

В приложениях .NET Compact Framework для размера буферного пространства Windows CE установлено по умолчанию значение 32768 байт. Можно изменить размер буферного пространства сокета, вызвав свойство SetSocketOption.

Socket был закрыт.

Примеры

В следующем примере кода извлекаются LingerOption Send значения времени ожидания и отображаются в консоли.

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

Комментарии

Socket параметры определяют поведение текущего объекта Socket . После успешного завершения этого метода массив, заданный optionValue параметром, содержит значение указанного Socket параметра.

Если длина optionValue массива меньше, чем число байтов, необходимых для хранения значения указанного Socket параметра, вызывает GetSocketOption исключение SocketException . Если вы получаете SocketException , используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки. после получения этого кода ознакомьтесь с подробным описанием ошибки в документации по коду ошибки API Windows sockets версии 2 . Используйте эту перегрузку для всех сокетов, представленных логическими значениями или целыми числами.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. дополнительные сведения см. в разделе сетевая трассировка в платформа .NET Framework.

См. также раздел

Применяется к

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Возвращает значение указанного параметра Socket в массиве.

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()

Параметры

optionLevel
SocketOptionLevel

Одно из значений перечисления SocketOptionLevel.

optionName
SocketOptionName

Одно из значений перечисления SocketOptionName.

optionLength
Int32

Длина ожидаемого возвращаемого значения, указанная в байтах.

Возвращаемое значение

Byte[]

Массив типа Byte, который содержит значение параметра сокета.

Исключения

Произошла ошибка при попытке доступа к сокету.

-или-

В приложениях .NET Compact Framework для размера буферного пространства Windows CE установлено по умолчанию значение 32768 байт. Можно изменить размер буферного пространства сокета, вызвав свойство SetSocketOption.

Socket был закрыт.

Примеры

В следующем примере кода извлекаются LingerOption Send значения времени ожидания и отображаются в консоли.

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

Комментарии

optionLengthПараметр задает максимальный размер возвращаемого массива байтов. Если значение параметра требует меньше байт, массив будет содержать только столько байтов. Если значение параметра требует больше байтов, GetSocketOption то вызовет исключение SocketException . Используйте эту перегрузку для всех сокетов, представленных логическими значениями или целыми числами.

Примечание

Если вы получаете SocketException , используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки. после получения этого кода ознакомьтесь с подробным описанием ошибки в документации по коду ошибки API Windows sockets версии 2 .

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. дополнительные сведения см. в разделе сетевая трассировка в платформа .NET Framework.

См. также раздел

Применяется к