boost::asio命名空间包含了Boost Asio库的所有东西,它下面还有一些子命名空间:
Boost.Asio提供了ip::address类,来处理IP地址,有两个实现,ip_address_v4和ip_address_v6。
它们有的功能都不多,其中最重要的有:
大多数时候,我们使用ip::address::from_string:
ip::address addr = ip::address::from_string("127.0.0.1");
要是想连接到一个指定名称的主机,下面的是错误的:
//throw an exception:
ip::address addr = ip::address::from_string("www.baidu.com");
端点就是你要连接的地址,它还有个叫端口的属性。每一个不同的socket类型都有属于它自己的endpoint类,比如ip::tcp::endpoint,ip::udp::endpoint,和ip::icmp::endpoint。
例如,你想连接到本地的80端口,代码如下:
ip::tcp::endpoint ep(ip::address::from_string("127.0.0.1"), 80);
有3中方法创建endpoint:
示例:
ip::tcp::endpoint ep1;
ip::tcp::endpoint ep2(ip::tcp::v4(), 80);
ip::tcp::endpoint ep3(ip::address::from_string("127.0.0.1"), 80);
如果是要连接到一个指定名称的主机(不是IP地址):
io_service service;
ip::tcp::resolver resolver(service);
ip::tcp::resolver::query query("www.baidu.com", "80");
ip::tcp::resolver::iterator iter = resolver.resolver(query);
ip::tcp::endpoint ep = *iter;
std::cout << ep.address().to_string() <<std::endl;
可以替换tcp为其他类型的socket。
给定一个endpoint,可以获取它的地址、端口和IP协议等信息:
std::cout << ep.address().to_string() << "." << ep.port()
<< "/" << ep.protocal() << std::endl;
原文地址:http://blog.csdn.net/shangguanwaner/article/details/44240571