/********************************************************************** 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; } |