-1

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

史蒂文使用它,但他打字

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

2 回答 2

3

如果没有为您的实现定义它,那么您将无法使用它。

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

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

于 2012-10-18T13:06:34.457 回答
2

首选选项是IP_PKTINFOBSD 和 OSX,并没有为 IPv4 实现此功能,值得注意的是,它们确实根据 IPv6 标准使用IPV6_PKTINFO. 同样有趣的是,Solaris 定义了两者。

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

于 2012-10-18T13:27:44.237 回答