创建boost :: asio :: ip :: address_v4

时间:2015-03-06 17:39:51

标签: c++ sockets boost ip

我无法找到合理的白皮书来解释如何创建boost::asio::ip::address_v4

例如:

// how to initialize address_v4 object?
address_v4 addr;   // with an IP address?

addr.from_string("192.168.1.100"); // does not work, see bellow

io_service io;
tcp::socket socket(io);
tcp::endpoint remote;
remote.address(addr);
remote.port(21);

// the rest...

根据boost文档,构造函数需要bytes_typeunsigned long

我是否必须输入由各个位组成的地址,或者是否有一种简单的方法来指定地址?

程序输出:

  

连接到:0.0.0.0

     

connect:请求的地址无效   其背景

顺便说一句,是否有一些教程比boost网站提供的教程更好? 谢谢。

2 个答案:

答案 0 :(得分:2)

由于from_string是静态方法,因此不会更新addr的值。

要从点分十进制形式的IPv4字符串初始化addr,您应该使用:

addr = address::from_string("192.168.1.100");

答案 1 :(得分:0)

您也可以通过不解析字符串来加快处理速度,而直接使用address_v4 constructor that accepts bytes_type来设置地址。例如:

SELECT CASE TRUNC( SYSDATE - 1 ) - TRUNC( SYSDATE - 1, 'IW' )
       WHEN 6                                                 -- Sunday
       THEN TRUNC( SYSDATE - 2 )
       ELSE TRUNC( SYSDATE - 1 )
       END AS day 
FROM   DUAL