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アドレスを取得することが出来るのでしょうか?
IPアドレス取得
Re:IPアドレス取得
hostetn->h_addr
は文字列ではなく数値データです。
なので、
printf("%d.%d.%d.%d",hostetn->h_addr[0],hostetn->h_addr[1],hostetn->h_addr[2],hostetn->h_addr[3]);
で良かったと思いますが。
記憶違いだったらごめんなさい。
は文字列ではなく数値データです。
なので、
printf("%d.%d.%d.%d",hostetn->h_addr[0],hostetn->h_addr[1],hostetn->h_addr[2],hostetn->h_addr[3]);
で良かったと思いますが。
記憶違いだったらごめんなさい。
Re:IPアドレス取得
できない・・・
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を使ってみたり
いろいろやってみましたがどれもうまくいきません・・・
どこが間違っているのでしょうか?
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アドレス取得
すみません自己解決しました。
memcpy(&inaddr,hostent->h_addr_list[0],4);
strcpy(szIP,inet_ntoa(inaddr));
このようにしました。
ご教示してくださった方々、ありがとうございました。
これからもお世話になります。
memcpy(&inaddr,hostent->h_addr_list[0],4);
strcpy(szIP,inet_ntoa(inaddr));
このようにしました。
ご教示してくださった方々、ありがとうございました。
これからもお世話になります。