我是套接字编程的新手

我看到了 ICMP请求程序,因为他们使用了setsockopt到套接字
int on = 1;

setsockopt(s, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on))

但是即使我不使用此语句,程序也可以正常运行。为什么会这样
重要的是要向内核提及这个包含IP结构的套接字吗?

最佳答案

IP_HDRINCL选项执行以下操作(来自手册页):



大概您的程序正在构造IP header 。如果删除此选项,它将使用内核的IP header 。是否“有效”取决于程序的工作方式。也许在某些情况下,它想自定义IP header ,并且删除该 header 将无法正常工作。

如果您发布该程序的其余部分或向我们介绍一些内容,我们可能会提供帮助。

09-07 13:22
查看更多