SocketOptionName 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义配置选项名称。
public enum class SocketOptionName
public enum SocketOptionName
type SocketOptionName =
Public Enum SocketOptionName
- 继承
字段
AcceptConnection | 2 | 套接字正在侦听。 |
AddMembership | 12 | 添加 IP 组成员身份。 |
AddSourceMembership | 15 | 加入源组。 |
BlockSource | 17 | 阻止源中的数据。 |
Broadcast | 32 | 允许在套接字上发送广播消息。 |
BsdUrgent | 2 | 使用 RFC-1222 中定义的紧急数据。 此选项只能设置一次;设置后,无法将其关闭。 |
ChecksumCoverage | 20 | 设置或获取 UDP 校验和覆盖率。 |
Debug | 1 | 记录调试信息。 |
DontFragment | 14 | 不要碎片 IP 数据报。 |
DontLinger | -129 | 正常关闭套接字而不挥之不去。 |
DontRoute | 16 | 不路由;将数据包直接发送到接口地址。 |
DropMembership | 13 | 删除 IP 组成员身份。 |
DropSourceMembership | 16 | 删除源组。 |
Error | 4103 | 获取错误状态并清除。 |
ExclusiveAddressUse | -5 | 允许将套接字绑定到独占访问。 |
Expedited | 2 | 使用 RFC-1222 中定义的加速数据。 此选项只能设置一次;设置后,无法将其关闭。 |
FastOpen | 15 | 启用 RFC-7413 中定义的 TCP 快速打开。 实际观察到的行为取决于 OS 配置和内核 TCP Cookie 缓存的状态。 启用 TFO 可能会影响互操作性并导致连接问题。 |
HeaderIncluded | 2 | 指示应用程序为传出数据报提供 IP 标头。 |
HopLimit | 21 | 指定 Internet 协议版本 6 (IPv6) 数据包的最大路由器跃点数。 这类似于 Internet 协议版本 4 的生存时间(TTL)。 |
IPOptions | 1 | 指定要插入传出数据报的 IP 选项。 |
IPProtectionLevel | 23 | 允许将 IPv6 套接字限制为指定范围,例如具有相同链接本地或站点本地前缀的地址。 此套接字选项使应用程序能够对 IPv6 套接字施加访问限制。 此类限制使在专用 LAN 上运行的应用程序能够简单且可靠地强化自身免受外部攻击。 此套接字选项可扩大或缩小侦听套接字的范围,在适当情况下启用对公共和专用用户的无限制访问,或根据需要仅限制对同一站点的访问。 此套接字选项在 IPProtectionLevel 枚举中定义了保护级别。 |
IpTimeToLive | 4 | 设置 IP 标头生存时间字段。 |
IPv6Only | 27 | 指示为 AF_INET6 地址系列创建的套接字是否仅限于 IPv6 通信。 为AF_INET6地址系列创建的套接字可用于 IPv6 和 IPv4 通信。 某些应用程序可能希望仅将为 AF_INET6 地址系列创建的套接字的使用限制为 IPv6 通信。 如果此值为非零(Windows 上的默认值),则为 AF_INET6 地址系列创建的套接字只能用于发送和接收 IPv6 数据包。 如果此值为零,则为 AF_INET6 地址系列创建的套接字可用于向 IPv6 地址或 IPv4 地址发送和接收数据包。 请注意,能够与 IPv4 地址交互需要使用 IPv4 映射地址。 Windows Vista 或更高版本支持此套接字选项。 |
KeepAlive | 8 | 使用 keep-alives。 |
Linger | 128 | 如果存在未输入的数据,则保持关闭。 |
MaxConnections | 2147483647 | 不支持;如果使用,将引发 SocketException。 |
MulticastInterface | 9 | 设置传出多播数据包的接口。 |
MulticastLoopback | 11 | IP 多播环回。 |
MulticastTimeToLive | 10 | IP 多播生存时间。 |
NoChecksum | 1 | 将校验和设置为零的 UDP 数据报发送。 |
NoDelay | 1 | 禁用 Nagle 算法以发送合并。 |
OutOfBandInline | 256 | 在普通数据流中接收带外数据。 |
PacketInformation | 19 | 返回有关收到的数据包的信息。 |
ReceiveBuffer | 4098 | 指定为接收保留的每套接字缓冲区空间总数。 这与 TCP 窗口的最大消息大小或大小无关。 |
ReceiveLowWater | 4100 | 指定 Receive 操作的低水位线。 |
ReceiveTimeout | 4102 | 接收超时。此选项仅适用于同步方法;它对异步方法(如 BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 方法)没有影响。 |
ReuseAddress | 4 | 允许套接字绑定到已在使用的地址。 |
ReuseUnicastPort | 12295 | 指示系统应延迟出站连接的临时端口分配。 这相当于使用 Winsock2 SO_REUSE_UNICASTPORT 套接字选项。 |
SendBuffer | 4097 | 指定为发送保留的每套接字缓冲区空间总数。 这与 TCP 窗口的最大消息大小或大小无关。 |
SendLowWater | 4099 | 指定 Send 操作的低水位线。 |
SendTimeout | 4101 | 发送超时。此选项仅适用于同步方法;它对异步方法(如 BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 方法)没有影响。 |
TcpKeepAliveInterval | 17 | TCP 连接将等待保持响应的秒数,然后再发送另一个保留探测。 |
TcpKeepAliveRetryCount | 16 | 连接终止前将发送的 TCP 保持活动探测数。 |
TcpKeepAliveTime | 3 | TCP 连接将保持活动/空闲状态的秒数,然后保留探测发送到远程。 |
Type | 4104 | 获取套接字类型。 |
TypeOfService | 3 | 更改服务字段的 IP 标头类型。 |
UnblockSource | 18 | 取消阻止以前阻止的源。 |
UpdateAcceptContext | 28683 | 使用现有套接字的属性更新接受的套接字属性。 这相当于使用 Winsock2 SO_UPDATE_ACCEPT_CONTEXT 套接字选项,并且仅在面向连接的套接字上受支持。 |
UpdateConnectContext | 28688 | 使用现有套接字的属性更新连接的套接字属性。 这相当于使用 Winsock2 SO_UPDATE_CONNECT_CONTEXT 套接字选项,并且仅在面向连接的套接字上受支持。 |
UseLoopback | 64 | 尽可能绕过硬件。 |
示例
下面的代码示例使用此枚举来设置套接字选项。
// 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);
// The socket will linger for 10 seconds after Socket.Close is called.
var lingerOption = new LingerOption(true, 10);
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, lingerOption);
' 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)
注解
SocketOptionName 枚举定义每个 Socket 配置选项的名称。 可以使用 Socket.SetSocketOption 方法配置套接字。