IPPROTO_UDP套接字选项

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

若要枚举协议并发现每个已安装协议支持的属性,请使用 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 头文件中定义,该文件自动包含在 Winsock2.h 头文件中。 IPPROTO_UDP 套接字选项在 Ws2tcpip.h 头文件中定义。 不应直接使用 Ws2def.h 头文件。

要求

要求 价值
页眉
ws2ipdef.h (包括 ws2tcpip.h)和 ws2tcpip.h
Windows Server 2003、Windows XP 和 Windows 2000 上的 Winsock2.h