有谁知道为什么:
boost::system::error_code ec;
boost::asio::ip::address const addr =
boost::asio::ip::address::from_string("10.10.10", ec);
Run Code Online (Sandbox Code Playgroud)
不返回错误,因为 10.10.10 是无效地址?
而不是这个 10.10.10 在 addr 中修改为 10.10.0.10 并且没有抛出异常?
boost::asio::ip::address::from_string()依赖于inet_pton()内部,它接受像 10.10.10 这样的东西作为有效地址。字符串“10.10”用于两个顶部八位字节。剩余的“10”被解释为 16 位数字,并拆分为最后两个八位字节。总而言之,这被正确解释为 10.10.0.10 。
此外,您的调用boost::asio::ip::address::from_string("10.10.10", ec);不会抛出,因为它使用boost::system::error_code.