当系统上只有IPv6地址可用时,您能打开AF_INET
套接字吗?
我正在尝试为一个可能只有IPv6地址处于活动状态的系统(不是双栈)获取HWADDR。
我可以使用AF_INET
打开套接字吗?我只对找到MAC地址感兴趣
答案 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()
调用都会成功,并为我提供我要求的设备的硬件地址。