只有IPv6地址在系统上可用的AF_INET套接字?

时间:2013-11-26 12:53:36

标签: c++ c ipv6

当系统上只有IPv6地址可用时,您能打开AF_INET套接字吗?

我正在尝试为一个可能只有IPv6地址处于活动状态的系统(不是双栈)获取HWADDR。

我可以使用AF_INET打开套接字吗?我只对找到MAC地址感兴趣

3 个答案:

答案 0 :(得分:1)

您肯定可以使用系统调用socket()创建IPv4套接字。但是,使用bind()将其绑定到IPv6接口将失败。

答案 1 :(得分:0)

您可以创建IPv4套接字。如果不能,系统在下个月连接到支持v4的网络时也无法接受IPv4地址,请参阅?

但是我不确定SIOCGIFHWADDR是否可以在没有路由的情况下通过非环回接口工作。您可以尝试使用目标系统,或者只尝试AF_INET和AF_INET6,捕获错误并使用返回结果的任何内容。

答案 2 :(得分:0)

我没有看到问题。您可以在IPv4和IPv6套接字上调用SIOCGIFHWADDR

无论我使用AF_INET还是AF_INET6来创建套接字,ioctl()调用都会成功,并为我提供我要求的设备的硬件地址。