未定义IP_RECVDSTADDR

未定义IP_RECVDSTADDR,c,linux,network-programming,C,Linux,Network Programming,错误:IP_RECVDSTADDR未声明首次在此函数中使用,我可以在Linux中使用此套接字选项吗?或者它已经未定义。我在Linux上的所有in.h文件中进行了搜索,但找不到任何有关它的信息 史蒂文习惯了,但他打字 #ifdef IP_RECVDSTADDR ....... #endif 如果没有为您的实现定义它,那么您就不能使用它 斯蒂芬斯的书之所以使用ifdef,是因为如果没有定义,就不能使用它 该选项是BSD特定的选项;它出现在Mac OS X和FreeBSD中首选选项是IP_PKTI

错误:IP_RECVDSTADDR未声明首次在此函数中使用,我可以在Linux中使用此套接字选项吗?或者它已经未定义。我在Linux上的所有in.h文件中进行了搜索,但找不到任何有关它的信息

史蒂文习惯了,但他打字

#ifdef IP_RECVDSTADDR 
.......
#endif

如果没有为您的实现定义它,那么您就不能使用它

斯蒂芬斯的书之所以使用ifdef,是因为如果没有定义,就不能使用它

该选项是BSD特定的选项;它出现在Mac OS X和FreeBSD中

首选选项是IP_PKTINFO,但BSD和OSX没有为IPv4实现此功能,值得注意的是,它们确实根据IPv6标准为IPv6_PKTINFO实现此功能。同样令人感兴趣的是,Solaris定义了这两者

因此,您需要每个平台特定的代码来处理IPv4