我正在尝试使用WinSock2以编程方式发出ICMPv6回应请求(ping6)。是基于将要发出的整个IPv6数据包的。因此--据我所知--操作系统(kernel?)应该在发送数据包时计算它并将其写入ICMPv6报头。
这在SUSE Linux Enterprise Server 11上工作得很好,但是Windows XP似乎不能做到这一点。在Wireshark的帮助下,我甚至发现它可以正确地响应来自SUSE Linux服务器的ICMPv6 ping,这些ping使用完全相同的代码发送。因此,Windows
由于用户只需要ICMPv6的前几个字段,这些字段对于所有ICMPv6数据包都是相同的,因此我在C++端创建了一个ICMPv6类(使用ICMPv6Unknown)。我的问题是,虽然它们可以很好地使用ICMPv6的字段,但IPv6中的plen字段不能根据我在ICMPv6头中放入的类型正确更新。我不确定我可以在IPv6类中编辑什么,让它根据下一步的ICMPv6类型更改字段,现在它确实是这样做的: p += pay我知道