[英]AF_INET socket when only IPv6 addresses are available on system?
当系统上只有IPv6地址可用时,您可以打开AF_INET
套接字吗?
我正在尝试为一个可能只有IPv6地址处于活动状态(而不是双堆栈)的系统获取HWADDR。
我可以使用AF_INET
打开套接字吗? 我只想找到MAC地址
您肯定可以使用系统调用socket()
创建一个IPv4套接字。 但是,使用bind()
将其绑定到IPv6接口将失败。
您可以创建一个IPv4套接字。 如果不能,下个月连接到支持v4的网络时,系统也将无法接受IPv4地址。
但是我不确定SIOCGIFHWADDR是否可以在没有通过非环回接口的路由的情况下工作。 您可以尝试在目标系统上运行tat,或者仅尝试同时使用AF_INET和AF_INET6,捕获错误并使用返回结果的任何方法。
我看不到问题。 您可以在IPv4和IPv6套接字上调用SIOCGIFHWADDR
。
不管我使用AF_INET
还是AF_INET6
创建套接字, ioctl()
调用都会成功,并为我提供所需设备的硬件地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.