Socket.GetSocketOption Метод

Определение

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

Перегрузки

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

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

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

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

GetSocketOption(SocketOptionLevel, SocketOptionName)

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

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Возвращает указанное значение параметра 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 версии 2 , чтобы получить подробное описание ошибки. Используйте эту перегрузку для любых сокетов, представленных логическими значениями или целыми числами.

Примечание

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

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

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

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Возвращает значение указанного параметра 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 версии 2 , чтобы получить подробное описание ошибки.

Примечание

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

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

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

GetSocketOption(SocketOptionLevel, SocketOptionName)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Возвращает значение указанного параметра 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.

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

Объект, который представляет значение параметра. Когда для параметра 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и DropMembershipSocket . Linger Для параметра используйте Socket для optionLevel параметра . Для AddMembership и DropMembershipиспользуйте IP. Если вы хотите задать значение любого из перечисленных выше параметров, используйте SetSocketOption метод .

Примечание

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

Примечание

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

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

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