IPPROTO_UDP 套接字选项

下表描述了 IPPROTO_UDP 套接字选项,这些选项适用于为 IPv4 和 IPv6 地址系列创建的套接字, (AF_INET并将 协议 参数AF_INET6) 指定为 UDP (IPPROTO_UDP) 的 套接字 函数。 有关获取和设置套接字选项的详细信息,请参阅 getsockoptsetsockopt 函数参考页。

若要枚举协议并发现每个已安装协议支持的属性,请使用 WSAEnumProtocolsWSCEnumProtocolsWSCEnumProtocols32 函数。

选项

选项 获取 设置 Optval 类型 说明
UDP_CHECKSUM_COVERAGE (ws2tcpip.h) DWORD (布尔) 如果 为 TRUE,则 UDP 数据报会随校验和一起发送。
UDP_NOCHECKSUM (ws2tcpip.h) DWORD (布尔) 如果 为 TRUE,则发送 UDP 数据报,校验和为零。 对于服务提供商是必需的。 如果服务提供商没有禁用 UDP 校验和计算的机制,它可能只存储此选项而不执行任何操作。 IPv6 不支持此选项。
UDP_RECV_MAX_COALESCED_SIZE (ws2ipdef.h;include ws2tcpip.h) DWORD 设置为非零值时,多个接收的数据报可能会在向应用程序指示之前合并成单个消息缓冲区。 选项值表示可以向应用程序指示的合并消息的最大消息大小(以字节为单位)。 可能仍会指示大于选项值的未合并消息。 默认值为 0 (无合并) 。 仅当数据报源自同一源地址和端口时,才会合并数据报。 合并的所有数据报的大小都相同,但最后一个数据报可能更小。 如果应用程序想要检索除最后一个数据报以外的 (数据报大小() 可能有所不同),则必须使用支持控制信息 (的接收 API,例如 LPFN_WSARECVMSG (WSARecvMsg) ) 。 除最后一条消息之外的所有消息的大小都可以在 UDP_COALESCED_INFO 控件消息中找到,该消息的类型为 DWORD。 为保护类型,应用程序应直接使用 WSAGetUdpRecvMaxCoalescedSizeWSASetUdpRecvMaxCoalescedSize 函数,而不是直接使用套接字选项。
UDP_SEND_MSG_SIZE (ws2ipdef.h;include ws2tcpip.h) DWORD 当设置为非零值时,应用程序发送的缓冲区将按网络堆栈细分为多个消息。 选项值表示每个分解消息的大小。 选项值以字节表示。 最后一个段的大小可能小于选项的值。 默认值为 0 (无分段) 。 应用程序应设置一个小于目标路径的 MTU 的值, () ,以避免 IP 碎片。 为保护类型,应用程序应使用 WSAGetUdpSendMessageSizeWSASetUdpSendMessageSize 函数,而不是直接使用套接字选项。

旧版 Windows 对IPPROTO_UDP选项的支持

UDP_CHECKSUM_COVERAGE 在 Windows 2000 和 Windows NT4 上不可用。 UDP_CHECKSUM_COVERAGEUDP_NOCHECKSUM 在 Windows 9x/Me 上不可用。

备注

在为 Windows Vista 及更高版本发布的 Microsoft Windows 软件开发工具包 (SDK) 上,头文件的组织已更改, IPPROTO_UDP 级别在 Ws2def.h 头文件中定义,Ws2def.h 头文件中自动包含在 Winsock2.h 头文件中。 IPPROTO_UDP套接字选项在 Ws2tcpip.h 头文件中定义。 不应直接使用 Ws2def.h 头文件。

要求

要求
标头
ws2ipdef.h (包括 ws2tcpip.h) 和 ws2tcpip.h
Windows Server 2003、Windows XP 和 Windows 2000 上的 Winsock2.h