Socket.GetSocketOption Метод

Определение

Возвращает значение параметра Socket.Returns the value of a Socket option.

Перегрузки

GetSocketOption(SocketOptionLevel, SocketOptionName)

Возвращает значение указанного параметра Socket, представленного в виде объекта.Returns the value of a specified Socket option, represented as an object.

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Возвращает указанное значение параметра Socket, представленного в виде байтового массива.Returns the specified Socket option setting, represented as a byte array.

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Возвращает значение указанного параметра Socket в массиве.Returns the value of the specified Socket option in an array.

GetSocketOption(SocketOptionLevel, SocketOptionName)

Возвращает значение указанного параметра Socket, представленного в виде объекта.Returns the value of a specified Socket option, represented as an object.

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);
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.One of the SocketOptionLevel values.

optionName
SocketOptionName

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

Возвраты

Объект, который представляет значение параметра.An object that represents the value of the option. Когда для параметра optionName установлено значение Linger, возвращаемое значение является экземпляром класса LingerOption.When the optionName parameter is set to Linger the return value is an instance of the LingerOption class. Когда для параметра optionName задано значение AddMembership или DropMembership, возвращаемое значение является экземпляром класса MulticastOption.When optionName is set to AddMembership or DropMembership, the return value is an instance of the MulticastOption class. Когда для параметра optionName задано любое другое значение, возвращаемое значение является целым числом.When optionName is any other value, the return value is an integer.

Исключения

Произошла ошибка при попытке доступа к сокету.An error occurred when attempting to access the socket.

- или --or- Для параметра optionName было установлено неподдерживаемое значение MaxConnections.optionName was set to the unsupported value MaxConnections.

Socket был закрыт.The Socket has been closed.

Примеры

Следующий пример кода извлекает значения времени ожидания LingerOption и Send и отображает их в консоли.The following code example retrieves the LingerOption and Send time-out values and displays them to the console.

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.Socket options determine the behavior of the current Socket. Используйте эту перегрузку для получения параметров Linger, AddMembershipи DropMembershipSocket.Use this overload to get the Linger, AddMembership, and DropMembershipSocket options. Для параметра Linger используйте Socket для параметра optionLevel.For the Linger option, use Socket for the optionLevel parameter. Для AddMembership и DropMembershipиспользуйте IP.For AddMembership and DropMembership, use IP. Если вы хотите задать значение любого из перечисленных выше параметров, используйте метод SetSocketOption.If you want to set the value of any of the options listed above, use the SetSocketOption method.

Примечание

Если вы получаете SocketException, используйте свойство SocketException.ErrorCode для получения конкретного кода ошибки.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. После получения этого кода обратитесь к документации по коду ошибки API Windows Sockets версии 2 для получения подробного описания ошибки.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети.This member outputs trace information when you enable network tracing in your application. Дополнительные сведения см. в разделе Сетевая трассировка в .NET Framework.For more information, see Network Tracing in the .NET Framework.

Дополнительно

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Возвращает указанное значение параметра Socket, представленного в виде байтового массива.Returns the specified Socket option setting, represented as a byte array.

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.One of the SocketOptionLevel values.

optionName
SocketOptionName

Одно из значений SocketOptionName.One of the SocketOptionName values.

optionValue
Byte[]

Массив типа Byte, который используется для отправки значения параметра.An array of type Byte that is to receive the option setting.

Исключения

Произошла ошибка при попытке доступа к сокету.An error occurred when attempting to access the socket.

- или --or- В приложениях .NET Compact Framework для размера буферного пространства Windows CE установлено по умолчанию значение 32768 байт.In .NET Compact Framework applications, the Windows CE default buffer space is set to 32768 bytes. Можно изменить размер буферного пространства сокета, вызвав свойство SetSocketOption.You can change the per socket buffer space by calling SetSocketOption.

Socket был закрыт.The Socket has been closed.

Примеры

Следующий пример кода извлекает значения времени ожидания LingerOption и Send и отображает их в консоли.The following code example retrieves the LingerOption and Send time-out values and displays them to the console.

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.Socket options determine the behavior of the current Socket. После успешного завершения этого метода массив, заданный параметром optionValue, содержит значение указанного параметра Socket.Upon successful completion of this method, the array specified by the optionValue parameter contains the value of the specified Socket option.

Если длина массива optionValue меньше, чем число байтов, необходимое для хранения значения указанного параметра Socket, GetSocketOption выдаст SocketException.When the length of the optionValue array is smaller than the number of bytes required to store the value of the specified Socket option, GetSocketOption will throw a SocketException. Если вы получаете SocketException, используйте свойство SocketException.ErrorCode для получения конкретного кода ошибки.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. После получения этого кода обратитесь к документации по коду ошибки API Windows Sockets версии 2 для получения подробного описания ошибки.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error. Используйте эту перегрузку для всех сокетов, представленных логическими значениями или целыми числами.Use this overload for any sockets that are represented by Boolean values or integers.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети.This member outputs trace information when you enable network tracing in your application. Дополнительные сведения см. в разделе Сетевая трассировка в .NET Framework.For more information, see Network Tracing in the .NET Framework.

Дополнительно

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Возвращает значение указанного параметра Socket в массиве.Returns the value of the specified Socket option in an array.

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.One of the SocketOptionLevel values.

optionName
SocketOptionName

Одно из значений SocketOptionName.One of the SocketOptionName values.

optionLength
Int32

Длина ожидаемого возвращаемого значения, указанная в байтах.The length, in bytes, of the expected return value.

Возвраты

Byte[]

Массив типа Byte, который содержит значение параметра сокета.An array of type Byte that contains the value of the socket option.

Исключения

Произошла ошибка при попытке доступа к сокету.An error occurred when attempting to access the socket.

- или --or- В приложениях .NET Compact Framework для размера буферного пространства Windows CE установлено по умолчанию значение 32768 байт.In .NET Compact Framework applications, the Windows CE default buffer space is set to 32768 bytes. Можно изменить размер буферного пространства сокета, вызвав свойство SetSocketOption.You can change the per socket buffer space by calling SetSocketOption.

Socket был закрыт.The Socket has been closed.

Примеры

Следующий пример кода извлекает значения времени ожидания LingerOption и Send и отображает их в консоли.The following code example retrieves the LingerOption and Send time-out values and displays them to the console.

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 задает максимальный размер возвращаемого массива байтов.The optionLength parameter sets the maximum size of the returned byte array. Если значение параметра требует меньше байт, массив будет содержать только столько байтов.If the option value requires fewer bytes, the array will contain only that many bytes. Если значение параметра требует больше байтов, GetSocketOption выдаст SocketException.If the option value requires more bytes, GetSocketOption will throw a SocketException. Используйте эту перегрузку для всех сокетов, представленных логическими значениями или целыми числами.Use this overload for any sockets that are represented by Boolean values or integers.

Примечание

Если вы получаете SocketException, используйте свойство SocketException.ErrorCode для получения конкретного кода ошибки.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. После получения этого кода обратитесь к документации по коду ошибки API Windows Sockets версии 2 для получения подробного описания ошибки.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети.This member outputs trace information when you enable network tracing in your application. Дополнительные сведения см. в разделе Сетевая трассировка в .NET Framework.For more information, see Network Tracing in the .NET Framework.

Дополнительно

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