C语言 百分网手机站

C++ boost::asio编程-域名解析详解

时间:2020-09-28 10:47:10 C语言 我要投稿

C++ boost::asio编程-域名解析详解

  在网络通信中通常我们并不直接使用IP地址,而是使用域名。这时候我们就需要用reslover类来通过域名获取IP,它可以实现与IP版本无关的网址解析。下面,就和小编一起来看一看C++ boost::asio编程-域名解析详解,希望对大家有帮助!


  #include "stdafx.h"

  #include "boost/asio.hpp"

  #include "boost/shared_ptr.hpp"

  #include "boost/thread.hpp"

  #include <boost/lexical_cast.hpp>//使用字符串转换功能

  using namespace std;

  using namespace boost::asio;

  #ifdef _MSC_VER

  #define _WIN32_WINNT  0X0501 //避免VC下编译警告

  #endif

  //域名解析为IP

  //入参:域名,端口

  //返回:ip地址

  vector<string> domain2ip(const char *domain,int port)

  {

  io_service ios;

  //创建resolver对象

  ip::tcp::resolver slv(ios);

  //创建query对象

  ip::tcp::resolver::query qry(domain,boost::lexical_cast<string>(port));//将int型端口转换为字符串

  //使用resolve迭代端点

  ip::tcp::resolver::iterator it=slv.resolve(qry);

  ip::tcp::resolver::iterator end;

  vector<string> ip;

  for(;it!=end;it++)

  {

  ip.push_back((*it).endpoint().address().to_string());

  }

  return ip;

  }

  int _tmain(int argc, _TCHAR* argv[])

  {

  vector<string> ip=domain2ip("www.csdn.net",0);

  for(int i=0;i<ip.size();i++)

  {

  cout<<ip[i]<<endl;

  }

  get);

  return 0;

  }

  其中经过测试,端口可以填任意值均可以解析出来。


【C++ boost::asio编程-域名解析详解】相关文章:

C++ this指针详解11-26

c++快速排序详解10-05

C++ cin输入流详解10-04

c++ 中--declspec 的用法详解10-06

C++ 排序插入排序详解10-04

C++类中的继承实例详解10-20

C语言函数式编程中惰性求值详解11-20

C++的字符串分割函数的使用详解10-04

linux网络编程用到的网络函数详解和使用示例08-02