在为应用程序实现之前,我为Dual堆栈编写了两个服务器程序。
双堆栈服务器程序,可以通过单个IPv6接口接受IPv6和IPv4客户端。但IPv4会将其作为映射的IPv6地址。
具有两个接口的双栈服务器程序正在侦听,以便处理IPv6和IPv4客户端,分别为IPv6客户端的IPv6接口和IPv4客户端的IPv4接口,其中IPv4客户端不涉及IPv4映射地址请求服务器。
两者都运转良好。但是因为我只需要使用一个服务器模型来构建我的服务器应用程序。那么,如果还有其他更好的模型,哪一个更可取,甚至建议我。?
IPv4映射的IPv6地址将来会产生任何问题。?
任何人都可以帮助我。 在此先感谢您的帮助。 (在Linux 2.6.9环境和使用C的网络编程中工作。)
答案 0 :(得分:2)
如果您可以使用IPv6完成所需的一切,那么我认为选项1更容易。您的代码将更清洁,维护将更容易。您可能希望在代码中明确将IPV6_V6ONLY标志设置为0,以防您在系统管理员更改默认行为时依赖此标志。
答案 1 :(得分:0)
第二种方法是最便携的。例如,无论 IPV6_ONLY
选项如何,OpenBSD 都不允许在 IPv6 套接字上使用传入的 IPv4 流量。