Heim >Backend-Entwicklung >C#.Net-Tutorial >C++ boost::asio-Programmierung – detaillierte Einführung in die Auflösung von Domänennamen

C++ boost::asio-Programmierung – detaillierte Einführung in die Auflösung von Domänennamen

黄舟
黄舟Original
2016-12-14 16:58:292146Durchsuche

C++ boost::asio Programming-Domain Name Resolution

In der Netzwerkkommunikation verwenden wir normalerweise nicht direkt IP-Adressen, sondern Domänennamen. Zu diesem Zeitpunkt müssen wir die Reslover-Klasse verwenden, um die IP über den Domänennamen abzurufen, wodurch eine
URL-Auflösung unabhängig von der IP-Version realisiert werden kann.

#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; 
  } 
  getchar(); 
  return 0; 
}

Nach dem Testen kann der Port mit einem beliebigen Wert gefüllt und geparst werden.

Vielen Dank fürs Lesen, ich hoffe, es kann allen helfen. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn