我是套接字编程的新手
我看到了 ICMP请求程序,因为他们使用了setsockopt
到套接字int on = 1;
setsockopt(s, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on))
但是即使我不使用此语句,程序也可以正常运行。为什么会这样
重要的是要向内核提及这个包含IP结构的套接字吗?
最佳答案
IP_HDRINCL
选项执行以下操作(来自手册页):
大概您的程序正在构造IP header 。如果删除此选项,它将使用内核的IP header 。是否“有效”取决于程序的工作方式。也许在某些情况下,它想自定义IP header ,并且删除该 header 将无法正常工作。
如果您发布该程序的其余部分或向我们介绍一些内容,我们可能会提供帮助。