IPアドレスを入力し、ホスト名を取得するプログラムを
作っているのですが、まとめて表示する機能を付け加えたいです。
(例)
IPアドレスの上位3バイトを入力させる。
例)192.168.45
下位1バイトの開始IPアドレスを入力させる。
例)1
下位1バイトの終了IPアドレスを入力させる。
例)20
そうすると
指定された開始アドレスから終了アドレスまでの
ホスト名の一覧を表示する。(192.168.45.1~192.168.45.20のホスト名を一覧表示)
上位3バイトと下位1バイトを合わせるには
strcpy関数、strcat関数、strlen関数、
itoa関数、atoi関数をうまく使う必要がある。
ということはわかったのですが、どう使用していいかわかりません。
どなたか助けて下さい。お願いします!!
#include<stdio.h>
#include<winsock.h>
int gethost();
int main()
{
WSADATA wsaData;
char szAns[8];
int loop =1;
WSAStartup(MAKEWORD(1,1),&wsaData);
while(1){
printf("---------\n");
printf("1.ホスト名の取得\n");
printf("0.終了^\n");
printf("----------\n");
printf("選択:");
gets(szAns);
switch(szAns[0]){
case '0':
loop = 0;
break;
case '1':
gethost();
break;
default:
printf("入力エラー\n");
break;
}
if(loop==0)
break;
}
WSACleanup();
return 0;
}
int gethost()
{
char szIP[256];
HOSTENT *lpHost;
int addr;
printf("IPアドレス---");
gets(szIP);
addr=inet_addr(szIP);
lpHost=gethostbyaddr((char*)&addr,4,AF_INET);
if(lpHost==NULL){
printf("ホスト名取得失敗\n");
return -2;
}
printf("ホスト名---%s\n",lpHost->h_name);
return 0;
}