| /**********************************************************************Winsock2を用いたDNSサンプルプログラム
 このサンプルプログラムはDNSサーバにドメイン名を与えてエイリアスとIPア
 ドレスをリプライさせます。
 エイリアスとは,ホストの持つ別名のことです。
 (1)DNSサーバはWindowsシステムに登録されているものを使います。
 (2)コンパイル時に「ws2_32.lib」をリンクしてください。
 **********************************************************************/
 /*const char 
      *hostname="aaaa.tokyo-ct.ac.jp";*//*const char 
      *hostname="ybbsmtp.mail.yahoo.co.jp";*/
 const char *hostname="www.tokyo-ct.ac.jp";
 /* Import Library: Link with ws2_32.lib 
      */#include <stdio.h>
 #include <string.h>
 #include 
      <winsock2.h>
 int getIPaddress(const char 
      *host){
 WSADATA wsaData; 
      /*winsock*/
 LPHOSTENT lpHost;
 int status;
 int i;
     
      /*winsockをver1.1で初期化を要求*/status=WSAStartup(MAKEWORD(1, 1), &wsaData);
 if 
      (status != 0) {
 fprintf(stderr,"WSAStartup() 
      failed\n");
 return 
      INVALID_SOCKET;
 }
     
      /*ホスト名からホストの情報を得る*/lpHost = 
      gethostbyname(host);
 if(lpHost == NULL) 
      {
 fprintf(stderr,"host name 
      error\n");
 WSACleanup();
 return 
      INVALID_SOCKET;
 }
 printf("host 
      name      = %s\n" , 
      lpHost->h_name);
 /*printf("address 
      type   = %d\n" , lpHost->h_addrtype);*/ 
      /*AF_INETは2*/
 /*printf("address length = %d\n" , 
      lpHost->h_length);*/
 for(i = 0 ; 
      lpHost->h_aliases[i] ; i++) 
      {
 printf("aliases        = %s\n" , 
      lpHost->h_aliases[i]);
 }
     for(i = 0 ; 
      lpHost->h_addr_list[i] ; i++) 
      {IN_ADDR 
      *ip;
 ip = (IN_ADDR 
      *)lpHost->h_addr_list[i];
 printf("IP address     = %s\n" , 
      inet_ntoa(*ip));
 }
 printf("\n");
     
      WSACleanup();return 0;
 }
 int main(){
 getIPaddress(hostname);
 return 
  0;
 }
 |