端点 boost asio

来源:互联网 发布:打印机端口怎么看 编辑:程序博客网 时间:2024/05/16 07:03

端点是你用某个端口连接到的一个地址。不同的类型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);

有三种方式来让你建立一个端点:

Boost.Asio命名空间IP地址端点

endpoint():这是默认构造函数,某些时候可以用来创建UDP/ICMP socket。

endpoint(protocol, port):这个通常用来创建可以接受新连接的服务器端socket。

endpoint(addr, port):这个创建了一个连接到某地址和端口的端点。

例子如下:

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地址),你需要这样做:

// 输出 "87.248.122.122"

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;

你可以用你需要的socket类型来替换tcp。首先,为你想要查询的名字创建一个查询器,然后用resolve()函数解析它。如果成功,它至少会返回一个入口。利用返回的迭代器,使用第一个入口或者遍历整个列表。

给定一个端点,可以获得他的地址,端口和IP协议(v4或者v6):

std::cout << ep.address().to_string() << ":" << ep.port()<< "/" << ep.protocol() << std::endl;

原创粉丝点击