我创建了一个RAW套接字,并将套接字选项设置为"IP_HDRINCL"。我正在设置传出UDP数据包和
中的标识字段。发送相同的内容。当数据包发送出去时,我看到这个字段被更改为随机数。我可以在嗅探器捕获中看到相同的内容。
相同的代码在不同的Windows XP机器上构建和测试时,工作得很好。我可以看到传出包的IP报头中的标识字段与我设置的值相同。
不知道哪里出了问题。如果你有什么建议,请告诉我。
谢谢,
Renu
带有IP_HDRINCL
的原始套接字自动设置将要发送的ip数据包的某些字段的值。
在您的示例中,如果case为零,数据包id将被覆盖。(这是你的情况吗?)
有以下几种情况:(取自Raw Socket手册页)
+---------------------------------------------------+
|IP Header fields modified on sending by IP_HDRINCL |
+----------------------+----------------------------+
|IP Checksum |Always filled in. |
+----------------------+----------------------------+
|Source Address |Filled in when zero. |
+----------------------+----------------------------+
|Packet Id |Filled in when zero. |
+----------------------+----------------------------+
|Total Length |Always filled in. |
+----------------------+----------------------------+