サービス名からポート番号を取得には、getservbyname 関数を使用します。
#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;
}