ホームページ > バックエンド開発 > C#.Net チュートリアル > C++ boost::asio プログラミング - ドメイン名解決の詳細な紹介

C++ boost::asio プログラミング - ドメイン名解決の詳細な紹介

黄舟
リリース: 2016-12-14 16:58:29
オリジナル
2140 人が閲覧しました

C++ boost::asio プログラミング - ドメイン名解決

ネットワーク通信では、通常、IP アドレスを直接使用するのではなく、ドメイン名を使用します。このとき、resover クラスを使用してドメイン名から IP を取得する必要があります。これにより、IP バージョンに依存しない URL 解決を実現できます。

#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; 
}
ログイン後にコピー

テスト後、ポートに任意の値を入力し、解析できるようになります。

読んでいただきありがとうございます。他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート