IPアドレスからホスト名の取得

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
garo

IPアドレスからホスト名の取得

#1

投稿記事 by garo » 14年前

はじめまして。
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;
	}













アバター
shiro4ao
記事: 224
登録日時: 15年前
住所: 広島

Re: IPアドレスからホスト名の取得

#2

投稿記事 by shiro4ao » 14年前

下記のコードでうまくいくかもしれません。
仕様を間違えていたら申し訳ないです。
文字列処理が苦手なのでバグがあるかもしれません。

コード:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
// u=192.168.45
// l1=1
// l2=20

int EnumIPAddr(char* u,char* l1,char* l2){
	int i;
	char buf[1024];
	char tmp[1024];

	for(i=atoi(l1);i<=atoi(l2);i++){
		strcpy(buf,u);        
				
		strcat(buf,".");       
		itoa(i,tmp,10);         
		strcat(buf,tmp);         
		
		printf("IPAddr=%s\n",buf);  	//たぶんここにアドレスをホスト名にする関数を書く
	}
	return atoi(l2)-atoi(l1);
}


int main()
{
	char uP[1024];
	char lP1[1024];
	char lP2[1024];
				
	gets(uP);	//アドレスの前の部分
	gets(lP1);//始まりの値
	gets(lP2);//終わりの値

	EnumIPAddr(uP,lP1,lP2);	
	
	return 0;	
}


garo

Re: IPアドレスからホスト名の取得

#3

投稿記事 by garo » 14年前

動きました!
atoi関数について誤解していたみたいです、、、
本当にありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る