IPアドレス取得

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

IPアドレス取得

#1

投稿記事 by ひょう » 15年前

wsock32.libの質問をした
ひょうです。

IPアドレスを取得ところで早速つまずいてしまいました・・・


-------------------------------------------------------
scanf("%s",&host);

/*ソケット初期化*/
ret = WSAStartup(0x0101, &wsaData);
if(ret != 0){
printf("Socket initialization ERROR.\n");
}else{
printf("Socket initialization OK.\n");
}
hostent = gethostbyname(host);
printf("%s",hostetn->h_addr);
--------------------------------------------------------
※struct hostent *hostent は最初に定義しているものとします。

ためしに"www.yahoo.co.jp"と入力してみましたが
よくわからない文字列になって返ってきました。。。

どのようにすればIPアドレスを取得することが出来るのでしょうか?

softya

Re:IPアドレス取得

#2

投稿記事 by softya » 15年前

hostetn->h_addr
は文字列ではなく数値データです。
なので、
printf("%d.%d.%d.%d",hostetn->h_addr[0],hostetn->h_addr[1],hostetn->h_addr[2],hostetn->h_addr[3]);
で良かったと思いますが。
記憶違いだったらごめんなさい。

ひょう

Re:IPアドレス取得

#3

投稿記事 by ひょう » 15年前

私も%dをやってみたのですが
-51など負の数が出てしまうことがありました・・・

softya

Re:IPアドレス取得

#4

投稿記事 by softya » 15年前

あっ、失礼しました。char型(-128~127)でしたね。
(unsigned int)でキャストしてください。0~255のデータになります。

たかぎ

Re:IPアドレス取得

#5

投稿記事 by たかぎ » 15年前

> (unsigned int)でキャストしてください。0~255のデータになります。

unsigned charですよね。

softya

Re:IPアドレス取得

#6

投稿記事 by softya » 15年前

あっ、すいません2度ボケです。たかぎさん、ありがとうございます。
(unsigned char)
ですね。申し訳ないです。

ひょう

Re:IPアドレス取得

#7

投稿記事 by ひょう » 15年前

できない・・・

unsigned char IPaddr[7];
宣言したあと
IPaddr[0] = (unsigned char)hostent->h_addr[0];
IPaddr[1] = '.';
IPaddr[2] = (unsigned char)hostent->h_addr[1];
IPaddr[3] = '.';
IPaddr[4] = (unsigned char)hostent->h_addr[2];
IPaddr[1] = '.';
IPaddr[6] = (unsigned char)hostent->h_addr[3];
こんな感じで書いて
printf("%s",IPaddr);
で表示させようとしましたが
どうもうまくいきませんでした。
%dでやってみたりfor文で%cを使ってみたり
いろいろやってみましたがどれもうまくいきません・・・

どこが間違っているのでしょうか?

ひょう

Re:IPアドレス取得

#8

投稿記事 by ひょう » 15年前

すみません自己解決しました。
memcpy(&inaddr,hostent->h_addr_list[0],4);
strcpy(szIP,inet_ntoa(inaddr));
このようにしました。

ご教示してくださった方々、ありがとうございました。

これからもお世話になります。

閉鎖

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