Top / Programming / C++Builder / サービス名からポート番号を取得する

サービス名からポート番号を取得する

サービス名からポート番号を取得には、getservbyname 関数を使用します。

手順

  1. WSAStartup関数で、Winsockの初期化する
  2. getservbyname関数で、サービス名からポート番号を取得する
  3. 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;
  }

  //サービス名からポート番号を取得
  char service[] = "http";
  char proto[] = "tcp";
  LPSERVENT serv = getservbyname("http", "tcp");
  if (serv == NULL) {
    std::cout << "error" << std::endl;
  } else {
    int port = htons(serv->s_port);
    std::cout << port << std::endl;
  }

  //Winsockの破棄
  WSACleanup();

  return 0;
}

更新履歴