ページ 11

URLからIPアドレスを取得

Posted: 2010年7月31日(土) 15:06
by 夏天
URLを入力しそのサーバーのIPアドレスを取得するというプログラムを作りたいのですが
まったくやり方がわかりません
検索をかけてもnslookupしか出てきません
DXライブラリにもそういった関数はついていないので
どうすればいいのか教えていただけないでしょうか

開発環境
OS:WindowsXP
エディタ:VisualStudio2010
ライブラリ:DXライブラリ

Re:URLからIPアドレスを取得

Posted: 2010年7月31日(土) 15:30
by お豆
socketプログラミングですね。
こういった回答が適切かはわかりませんが、該当するのは下記の関数です。

この関数をキーワードに検索して見るとすぐに、サンプルコードが見つかると思いますよ。
gethostbyname
getaddrinfo

Re:URLからIPアドレスを取得

Posted: 2010年7月31日(土) 18:17
by shiro4ao
DXライブラリから離れてしまいますが、以下のようにしてホスト名から
IPアドレスを求めることができます。

===============GetIPaddr.cpp=============================================
#include <stdio.h>
#include <winsock2.h>

int main() {
LPHOSTENT host;
WSADATA wsaData;
char hostname[/url]="www.google.co.jp"; //試しにgoogleのアドレス
IN_ADDR inaddr;
int i,addr1,addr2,addr3,addr4;

WSAStartup(2 , &wsaData);
host = gethostbyname(hostname);

printf("IPアドレス = %d.%d.%d.%d\n" ,(BYTE)*((host->h_addr_list[0])) ,(BYTE)*((host->h_addr_list[0]) + 1) ,(BYTE)*((host->h_addr_list[0]) + 2) ,(BYTE)*((host->h_addr_list[0) + 3));
WSACleanup();
return 0;
}
===================================================================

====実行結果======================================================
C:\GetIPaddr>GetIPaddr.exe
IPアドレス = 66.249.89.104
================================================================

大変申し訳ないのですが、
エラー処理はしていませんので、実行する際は確実にgoogleにアクセス出来る状態で実行してください。
配列へのポインタになっているべき理由があるはずなのですが自分にはわかりませんでした。
あと、URLからではなくてすみません。

Re:URLからIPアドレスを取得

Posted: 2010年7月31日(土) 22:49
by 夏天
皆さんの協力で無事満足のいく結果が得られましたありがとうございます

>>お豆さんへ
なるほど、ソケットプログラムというのですね。
初めて聞きました^^;
まだまだ自分には覚えるべきことがたくさんあることがわかったので
ありがとうございます

>>shiro4aoさんへ
DXライブラリから離れていても大丈夫です
自分がU・R・L!U・R・L!っていっていたものはどうやらホスト名のことっぽいです
まさにこういうのを求めていました
最初エラーが出ましたがws2_32.libをリンクするのをしていなかったっぽいので
無事コンパイルが通ったのでよかったです
ありがとうございます
画像