无效地址

时间:2018-02-19 11:16:17

标签: c++ boost-asio

有人知道原因:

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并且没有抛出异常?

2 个答案:

答案 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)所有功能

  1. 哪个可以两个例外。这种类型的函数没有boost::system::error_code类型的参数。
  2. 哪个不应该抛出异常,而是相应地将boost::system::error_code类型的参数设置为参数。
  3. 请查看https://wandbox.org/permlink/0wXerng3CYzhAOtT