端点是用某个端口连接到的一个地主,不同类型的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);
有三种方式来建立一个端点
endpoint():这是默认构造函数,某些时候可以用来窗口UDP/ICMP socket
endpoint(prorocal, port):这个通常用来创建可以接受新连接的服务器端socket
endpoint(addr, port):这个创建了一个连接到某地址和端口的端点
eg:
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.yahoo.com", "80");
ip::tcp::resolver::iterator iter = resolver.resolve(query);
ip::tcp::endpoint ep = *iter;
std::cout << ep.address().to_string()<<std::endl;
// 输出“87.248.122.122”
可以用需要的socket类型来替换tcp。首先,为你想要查询的名字创建一个查询器,然后用resolve()函
数解析它。如果成功,它至少会返回一个入口。利用返回的迭代器,使用第一个入口或者遍历整个列表。
给定一个端口,可以获取它的地主,端口和ip协议
std::cout << ep.address().to_string() << ":" << ep.port() << "/" << ep.portocol() << std::endl;