有人知道原因:
boost::system::error_code ec;
boost::asio::ip::address const addr =
boost::asio::ip::address::from_string("10.10.10", ec);
不返回错误,因为10.10.10是无效地址?
而不是这个10.10.10在addr中被修改为10.10.0.10并且没有抛出异常?
答案 0 :(得分:4)
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
。
答案 1 :(得分:0)
Boost提供两种类型的变体(我使用的是Atlest)所有功能
boost::system::error_code
类型的参数。boost::system::error_code
类型的参数设置为参数。