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

creating boost::asio::ip::address_v4

我找不到解释如何创建 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

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

程序输出:

connecting to: 0.0.0.0

connect: The requested address is not valid in its context

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

由于from_string是一个静态方法,它不会更新addr的值。

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

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

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

address_v4 addr({192, 168, 1, 100});