Top / Programming / C++Builder / IPアドレスからホスト名を取得する

IPアドレスからホスト名を取得する

IPアドレスからホスト名を取得するには、gethostbyaddr 関数を使用します。

手順

  1. WSAStartup関数で、Winsockの初期化する
  2. inet_addr関数で、IPアドレスの文字列をバイナリ値に変換する
  3. gethostbyaddr 関数で、IPアドレスからホスト名を取得する
  4. WSACleanup関数で、Winsockの破棄する

ソースコード

#include <tchar.h>
#include <winsock.h>
#include <iostream>
//---------------------------------------------------------------------------
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
  //Winsockの初期化
  WSADATA wsadata;
  if (WSAStartup(MAKEWORD(1, 1), &wsadata)) {
    std::cout << "error" << std::endl;
    return 0;
  }

  //IPアドレスからホスト名を取得
  unsigned long in = inet_addr("127.0.0.1");
  if (in == INADDR_NONE) {
    std::cout << "error" << std::endl;
    return 0;
  }

  struct hostent* host = gethostbyaddr((char*)&in, sizeof(in), PF_INET);
  if (host == NULL) {
    std::cout << "error" << std::endl;
    return 0;
  }
  std::cout << host->h_name << std::endl;

  //Winsockの破棄
  WSACleanup();

  return 0;
}

更新履歴