Socket.SetSocketOption Метод

Определение

Устанавливает параметр Socket.

Перегрузки

SetSocketOption(SocketOptionLevel, SocketOptionName, Object)

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

SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Устанавливает заданное целое значение для указанного параметра Socket.

SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)

Устанавливает для заданного параметра Socket указанное значение Boolean.

SetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

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

SetSocketOption(SocketOptionLevel, SocketOptionName, Object)

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

public:
 void SetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName, System::Object ^ optionValue);
public void SetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, object optionValue);
member this.SetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName * obj -> unit
Public Sub SetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName, optionValue As Object)

Параметры

optionLevel
SocketOptionLevel

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

optionName
SocketOptionName

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

optionValue
Object

Объект LingerOption или MulticastOption, содержащий значение параметра.

Исключения

optionValue имеет значение null.

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

Socket был закрыт.

Примеры

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

// Specifies that send operations will time-out 
// if confirmation is not received within 1000 milliseconds.
s->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 1000 );

// Specifies that the Socket will linger for 10 seconds after Close is called.
LingerOption^ lingerOption = gcnew LingerOption( true,10 );

s->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::Linger, lingerOption );
// Send operations will time-out if confirmation
// is not received within 1000 milliseconds.
s.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000);

// The socket will linger for 10 seconds after Socket.Close is called.
LingerOption lingerOption = new LingerOption (true, 10);

s.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Linger, lingerOption);
'Send operations will time-out if confirmation is 
' not received within 1000 milliseconds.
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000)

' The socket will linger for 10 seconds after Socket.Close is called.
Dim lingerOption As New LingerOption(True, 10)
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, lingerOption)

Комментарии

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

Примечание

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

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

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

SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Устанавливает заданное целое значение для указанного параметра Socket.

public:
 void SetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName, int optionValue);
public void SetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, int optionValue);
member this.SetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName * int -> unit
Public Sub SetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName, optionValue As Integer)

Параметры

optionLevel
SocketOptionLevel

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

optionName
SocketOptionName

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

optionValue
Int32

Значение параметра.

Исключения

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

Socket был закрыт.

Примеры

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

// Specifies that send operations will time-out 
// if confirmation is not received within 1000 milliseconds.
s->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 1000 );

// Specifies that the Socket will linger for 10 seconds after Close is called.
LingerOption^ lingerOption = gcnew LingerOption( true,10 );

s->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::Linger, lingerOption );
// Send operations will time-out if confirmation
// is not received within 1000 milliseconds.
s.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000);

// The socket will linger for 10 seconds after Socket.Close is called.
LingerOption lingerOption = new LingerOption (true, 10);

s.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Linger, lingerOption);
'Send operations will time-out if confirmation is 
' not received within 1000 milliseconds.
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000)

' The socket will linger for 10 seconds after Socket.Close is called.
Dim lingerOption As New LingerOption(True, 10)
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, lingerOption)

Комментарии

Socket параметры определяют поведение текущего Socket. Для параметра с типом Boolean данных укажите ненулевое значение, чтобы включить параметр, и нулевое значение, чтобы отключить параметр. Для параметра с целым типом данных укажите соответствующее значение. Socket параметры группируются по уровню поддержки протокола.

Ниже перечислены различные Socket параметры, которые можно задать с помощью этой перегрузки. Эти параметры группируются по соответствующим SocketOptionLevelпараметрам. Если вы планируете задать любой из этих параметров, обязательно используйте соответствующий SocketOptionLevel optionLevel параметр. Параметр, который нужно задать, должен быть указан в параметре optionName . Если вы хотите получить текущее значение любого из перечисленных параметров, используйте GetSocketOption этот метод.

SocketOptionLevel.Socket параметры, которые можно задать с помощью этой перегрузки.

SocketOptionLevel.IP параметры, которые можно задать с помощью этой перегрузки.

SocketOptionLevel.Tcp параметры, которые можно задать с помощью этой перегрузки.

SocketOptionLevel.Udp параметры, которые можно задать с помощью этой перегрузки.

SocketOptionLevel.IPv6 параметры, которые можно задать с помощью этой перегрузки.

Дополнительные сведения об этих параметрах см. в перечислении SocketOptionName .

Примечание

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

Примечание

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

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

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

SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)

Устанавливает для заданного параметра Socket указанное значение Boolean.

public:
 void SetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName, bool optionValue);
public void SetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, bool optionValue);
member this.SetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName * bool -> unit
Public Sub SetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName, optionValue As Boolean)

Параметры

optionLevel
SocketOptionLevel

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

optionName
SocketOptionName

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

optionValue
Boolean

Значение параметра, представленное в виде объекта Boolean.

Исключения

Объект Socket закрыт.

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

Примеры

Следующий пример кода открывает сокет и включает DontLinger параметры сокета и сокета OutOfBandInline .

// Establish the local endpoint for the socket.
IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );

// Create a TCP socket.
Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

// Connect the socket to the remote endpoint.
client->Connect( ipEndPoint );

// Set option that allows socket to close gracefully without lingering.
client->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::DontLinger, true );

// Set option that allows socket to receive out-of-band information in the data stream.
client->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::OutOfBandInline, true );
// Establish the local endpoint for the socket.
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress  ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);

// Create a TCP socket.
Socket client = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream, ProtocolType.Tcp);

// Connect the socket to the remote endpoint.
client.Connect(ipEndPoint);

// Set option that allows socket to close gracefully without lingering.
client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontLinger, true);

// Set option that allows socket to receive out-of-band information in the data stream.
client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.OutOfBandInline, true);

Комментарии

Socket параметры определяют поведение текущего Socket. Установите optionValue флажок, чтобы true включить параметр или false отключить параметр.

Socket параметры группируются по уровню поддержки протокола.

Ниже перечислены различные Socket параметры, которые можно задать с помощью этой перегрузки. Эти параметры группируются по соответствующему SocketOptionLevel значению. Если вы планируете задать любой из этих параметров, обязательно используйте соответствующее SocketOptionLevel значение для optionLevel параметра. Параметр, который нужно задать, должен быть указан в параметре optionName . Если вы хотите получить текущее значение любого из перечисленных параметров, используйте GetSocketOption этот метод.

SocketOptionLevel.Socket параметры, которые можно задать с помощью этой перегрузки.

SocketOptionLevel.IP параметры, которые можно задать с помощью этой перегрузки.

SocketOptionLevel.Tcp параметры, которые можно задать с помощью этой перегрузки.

SocketOptionLevel.Udp параметры, которые можно задать с помощью этой перегрузки.

Дополнительные сведения об этих параметрах см. в перечислении SocketOptionName .

Примечание

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

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

SetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

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

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

Параметры

optionLevel
SocketOptionLevel

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

optionName
SocketOptionName

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

optionValue
Byte[]

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

Исключения

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

Socket был закрыт.

Примеры

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

// Specifies that send operations will time-out 
// if confirmation is not received within 1000 milliseconds.
s->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 1000 );

// Specifies that the Socket will linger for 10 seconds after Close is called.
LingerOption^ lingerOption = gcnew LingerOption( true,10 );

s->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::Linger, lingerOption );
// Send operations will time-out if confirmation
// is not received within 1000 milliseconds.
s.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000);

// The socket will linger for 10 seconds after Socket.Close is called.
LingerOption lingerOption = new LingerOption (true, 10);

s.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Linger, lingerOption);
'Send operations will time-out if confirmation is 
' not received within 1000 milliseconds.
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000)

' The socket will linger for 10 seconds after Socket.Close is called.
Dim lingerOption As New LingerOption(True, 10)
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, lingerOption)

Комментарии

Socket параметры определяют поведение текущего Socket. Используйте эту перегрузку для задания этих Socket параметров, требующих массива байтов в качестве значения параметра.

Примечание

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

Примечание

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

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

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