【发布时间】:2016-09-10 01:25:25
【问题描述】:
我正在将一些代码仅从 IPv4 迁移到 IPv6,当然我需要保留 IPv4 的向后兼容性。
我已经阅读了一些用于转换我的代码的文档和指南,并且看到它写道,使用许多较新的 API(例如 inet_pton() 而不是 inet_addr())将只适用于 IPv4 和 IPv6。
但是,在某些情况下,我还不清楚何时需要编写代码来以不同的方式处理每个协议。具体来说,我不知道 IPv6 地址(使用 sockaddr_storage 结构的系列 AF_INET6)是否可以在本地网络上工作。
例如,假设我使用内置常量 in6addr_loopback 创建了这样一个地址,然后我尝试将其用作 bind() 调用的参数。
这是否适用于 IPv4 和 IPv6,或者我需要为每种情况创建正确的地址类型(AF_INET 与 AF_INET6)?我是否连接到本地套接字(即本例中的环回)而不是外部设备上的套接字是否重要?
我的客户端代码正在 iPhone/iPad 硬件上运行,以防万一。
【问题讨论】:
标签: iphone networking bind ipv6 bsd