【发布时间】:2011-05-01 21:40:08
【问题描述】:
我在 Solaris 上运行我的程序。 我是否需要配置我的机器以使用 IPV6 API 运行套接字程序。 IPV6 API 是否向后兼容? 例如,我可以将 AF_INET6 用于 IPV4 n 6 两种协议吗?
【问题讨论】:
-
This answer 可能会有所帮助
我在 Solaris 上运行我的程序。 我是否需要配置我的机器以使用 IPV6 API 运行套接字程序。 IPV6 API 是否向后兼容? 例如,我可以将 AF_INET6 用于 IPV4 n 6 两种协议吗?
【问题讨论】:
不,您不能设置操作系统选项来控制该行为。必须专门编写应用程序代码以使用 IPv6 API 并区分 IPV4 和 IPv6 连接。
不,IPv6 API 不向后兼容。 AF_INET 特定于 IPv4,AF_INET6 特定于 IPv6。但是,许多 IPv4 API 函数和结构已更新为支持 IPv6,并且引入了一些新的 API 函数和结构,以更不可知的方式支持这两种协议。
【讨论】:
getaddrinfo() 函数代替较旧的 gethostby...() 和 getaddrby...() 函数,并直接使用 SOCKADDR_STORAGE 结构而不是 sockaddr_in 和 sockaddr_in6。