// C言語でホスト名から公式名・別名・IPアドレスを得る // インターネットに接続可能な状態にして実行 // ホスト名[enter]を入力すると // 公式名・別名・IPアドレスが表示される。 // 終わる時は[ctrl]Z, [enter]をキーイン #include "stdio.h" #include "winsock2.h" #pragma comment(lib, "WS2_32.LIB") int main(int argc, char argv[]) { LPHOSTENT PH; WSADATA DT; IN_ADDR AD, *IP; char str[256]; WSAStartup(2,&DT); while(scanf("%s", str)!=EOF){ AD.S_un.S_addr=inet_addr(str);// 古いバージョンでは AD.s_addr...以下同様 if(AD.S_un.S_addr==INADDR_NONE) PH=gethostbyname(str); else PH=gethostbyaddr((const char *) &AD, sizeof(IN_ADDR),AF_INET); if(PH==NULL){ printf("\n ホスト名の取得失敗:%s\n",str); } else{ printf("公式名 : %s\n", PH->h_name); for(int i=0;PH->h_aliases[i]; i++){ printf("別名: %s\n", PH->h_aliases[i]); } for(int i=0; PH->h_addr_list[i];i++){ IP=(IN_ADDR *)PH->h_addr_list[i]; printf("IP=%s\n",inet_ntoa(*IP)); } } } WSACleanup(); return 0; }