我正在尝试使用WinSock2以编程方式发出ICMPv6回应请求(ping6)。是基于将要发出的整个IPv6数据包的。因此--据我所知--操作系统(kernel?)应该在发送数据包时计算它并将其写入ICMPv6报头。
这在SUSE Linux Enterprise Server 11上工作得很好,但是Windows XP似乎不能做到这一点。在Wireshark的帮助下,我甚至发现它可以正确地响应来自SUSE Linux服务器的ICMPv6 ping,这些ping使用完全相同的代码发送。因此,Windows XP不可能不支持ICMPv
参考http://www.faqs.org/rfcs/rfc1071.html,我试图推导出计算ICMPv6校验和的c代码。注意:数组数据是从ICMPv6获取的原始数据。unsigned short)(~sum); unsigned short count = 32;
//data is the raw data for ICMPv6