判断 ipv4 与 ipv6 地址 C++实现原理(boost源码为例)

在使用 boost asio 时, 对 accept类初始化时的过程感到兴趣,
因此调试过程中, 观察了其 bind 和 listen之前对服务器地址的处理.

调试观察的 boost 源码版本为 1.55.0

boost 源码的判断的思路:
1. 优先判断是否为 ipv6 地址
2. 其次判断是否为 ipv4 地址
3. 判断地址的关键的系统调用 inet_pton
boost 源码的 boost::asio::detail::socket_ops::inet_pton
其实最后调用的是系统的 inet_pton, 封装的名字够深的, 哈哈

inet_pton 的描述:

截取的 boost 源码:

Continue reading