通过


Socket.GetSocketOption 方法

定义

返回选项的值 Socket

重载

名称 说明
GetSocketOption(SocketOptionLevel, SocketOptionName)

返回指定选项的值 Socket ,表示为对象。

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

返回以字节数组表示的指定 Socket 选项设置。

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

返回数组中指定 Socket 选项的值。

GetSocketOption(SocketOptionLevel, SocketOptionName)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs
Source:
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 实例。 AddMembership设置为optionName或设置为或DropMembership返回值是类的MulticastOption实例。 如果 optionName 为任何其他值,则返回值为整数。

例外

尝试访问套接字时出错。

-或-

optionName 设置为不受支持的值 MaxConnections

示例

下面的代码示例检索 LingerOption 超时 Send 值并将其显示到控制台。

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的行为。 使用此重载获取LingerAddMembershipDropMembershipSocket选项。 Linger对于选项,请Socket用于optionLevel参数。 对于 AddMembershipDropMembership,请使用 IP。 如果要设置上面列出的任一选项的值,请使用 SetSocketOption 该方法。

注释

如果收到, SocketException请使用该 SocketException.ErrorCode 属性获取特定的错误代码。 获取此代码后,有关错误的详细说明,请参阅 Windows 套接字版本 2 API 错误代码 文档。

注释

在应用程序中启用网络跟踪时,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

另请参阅

适用于

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs
Source:
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来更改每个套接字缓冲区空间。

示例

下面的代码示例检索 LingerOption 超时 Send 值并将其显示到控制台。

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 属性获取特定的错误代码。 获取此代码后,有关错误的详细说明,请参阅 Windows 套接字版本 2 API 错误代码 文档。 将此重载用于由布尔值或整数表示的任何套接字。

注释

在应用程序中启用网络跟踪时,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

另请参阅

适用于

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs
Source:
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来更改每个套接字缓冲区空间。

示例

下面的代码示例检索 LingerOption 超时 Send 值并将其显示到控制台。

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 属性获取特定的错误代码。 获取此代码后,有关错误的详细说明,请参阅 Windows 套接字版本 2 API 错误代码 文档。

注释

在应用程序中启用网络跟踪时,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

另请参阅

适用于