取得方法

解決


高麗  2002-04-22 05:28:09  No: 104192  IP: [192.*.*.*]

はじめまして、高麗といいます。
VBで、グローバルIPを取得するにはどうすればいいのでしょうか?
ローカルは、取得できるんですが、ネットにつないでいるとき
IPが毎回違うので、取得したいとおもいました。
ま、診断君とか行ってもいいんですが、めんどうなので。
環境は、XPのPROで、フレッツADSLです。
で、そこらにあるフリーのツールでは、
なかなかグローバルのIPは、取得できません。
できても、ルーターのIPです。
(プライベートでもない、ルーターのIPだと思います)
宜しくお願いします。

編集    削除
とらきち  2002-04-22 08:19:57  No: 104193  IP: [192.*.*.*]

グローバルアドレスはプロバイダが割り当てるものですから
毎回違います。取得方法ですが、そういうのは恐らくCGIを使って
するもので、VBは畑違いだと思います。

どうしてもやりたい場合は、自前のホームページスペースに自作CGIを
設置してそこにアクセスさせ、ローカルにファイルとして保存。
それを解析する、という方法は如何でしょう。
(診断君等を利用してもいいですがローカル側のファイル処理が大変です。)

例:Cの場合
/* サーバーかそれと同じOS、CPU環境でコンパイル)*/
/* telnetでgcc なんとか.c -o なんとか.cgiとするとできます。*/
#include <stdio.h>

int main(){

printf("Content-type: text/html\n\n");
printf("%s",getenv("REMOTE_ADDR");
return 0;



パール
#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print $ENV{REMOTE_ADDR};
exit;

素朴な疑問ですが、いったい何に使うのでしょうか?
差し支えなければ知りたいです。

編集    削除
トラキチ  2002-04-22 08:25:59  No: 104194  IP: [192.*.*.*]

Cのprintf("%s",getenv("REMOTE_ADDR"));のところ
括弧が足りませんでした。

編集    削除
たかみちえ  URL  2002-04-22 09:11:42  No: 104195  IP: [192.*.*.*]

テキスト出力のCGIを作って、そこでIP取得
それをVBのソフトでじかにダウンロード
ダウンロードしたものを、StrConvで変換したあと、のぞく。

  テキスト出力CGIは、サーバーがSSIに対応していないと使えないように思えますけど、
結構有効かもしれない手段ですよー^^;
(たとえば、リモートファイルの更新日を取得したりとか…)

編集    削除
たかみちえ  URL  2002-04-22 09:14:27  No: 104196  IP: [192.*.*.*]

ファイルのダウンロードのサンプルはここ(http://hp.vector.co.jp/authors/VA015521/)にあります。
InternetExplorerの4以上が必要…かもしれません。

編集    削除
高麗  2002-04-22 16:26:44  No: 104197  IP: [192.*.*.*]

なんかVBでは、無理っぽいですね。
どういう物が欲しいか、参考URLをだします。
http://www.big.or.jp/~minowa/software/index.html
Get IP Addressってソフトです。
これ使えって言われるときついんですが、友達の環境だとこれでもグローバルIPが取得出来ないので自作しようと思ったのです。
念のため言いますが、CGIを使うんであればここに書き込みしていません。

編集    削除
たかみちえ  URL  2002-04-22 22:37:47  No: 104198  IP: [192.*.*.*]

> http://www.big.or.jp/~minowa/software/index.html
> Get IP Addressってソフトです。
  えーと、多分このソフトは
ローカルがわにあるIPアドレス(Windowsフォルダにある"winipcfg"というソフトで確認できます)
を、レジストリなり、どこかから取得しているんでしょうね。
グローバルIPアドレスとは違うものです(同じ場合もあるんでしょうけど…)。
ちょっとローカルがわの処理では無理ですね。

> 念のため言いますが、CGIを使うんであればここに書き込みしていません。
  うーん、CGIというのは、HTMLや画像を作るものだと思っていませんか?

  CGIはスクリプトにしたがってファイルを作り上げているだけです。
  ブラウザやその他の方法でCGIをダウンロードするときには、
それがCGIだと(ローカルがわのシステムは)意識していません。
(サーバーがわでスクリプトを実行したあと、Content-typeヘッダにしたがったファイルとして送ってくるので)

  だから、よくあるようなHTMLを生成したりするようなCGIではなく、
ただのテキストを出力するCGIを(APIなどを使って)ダウンロードすれば、
それはVBのなかでは、String型の変数と同じように扱えます。
(サーバーのOSはこちらとちがうでしょうから、変換が必要です。strconv関数をつかいます)

  まあ、IPアドレスがパソコンのメモリ上のどこにもないなら、ダウンロードも何もできなくなるはずなので、
メモリのどこかにはあるんでしょうけど…。
特殊な処理をすると、全ての環境に対応できなくなるかもしれないので、
普通の手段を使った方がいいと思います。

編集    削除
たかみちえ  URL  2002-04-22 23:09:48  No: 104199  IP: [192.*.*.*]

わたしのところにIPアドレスではありませんけど、
サーバー上のデータを取得するためのテキスト出力CGIがあります。
参考にしてみてください。
http://homepage2.nifty.com/_omp/Download/ProgDiff.lzh

  以下が実行例です、わたしのホームページの入り口の情報を見ます。各行の情報については、
上のLZHファイルの中のCGIファイルをよんでみてください。
http://hpcgi2.nifty.com/_omp/ProgDiff.cgi?FileName=../homepage/Index.html

(さっきIPアドレス取得機能もつけました、通常の方法では取得できないようになっています。注意してお使いください)

編集    削除
トラキチ  2002-04-23 02:10:42  No: 104200  IP: [192.*.*.*]

こうして下さい。

1.Inetコントロールの参照設定をする。
2.フォームにInetコントロールとテキストコントロールを貼り付ける。
3. 下のコードを貼り付ける。

Private Sub Form_Load()
Dim str1() As String
Dim str2() As String
Dim i As String
Form1.Visible = False
Text1.Text = ""
Inet1.URL = "http://taruo.net/e/"
Text1.Text = Inet1.OpenURL
str1 = Split(Text1.Text, " ")
Text1.Text = str1(51)
str2 = Split(Text1.Text, "-")
MsgBox "Your IP adress is " & str2(0)
Unload Me
End Sub

以上。

あなたはCGIがお嫌いなようですが、何か嫌な事でもあったんですかね。

編集    削除
トラキチ  2002-04-23 02:14:07  No: 104201  IP: [192.*.*.*]

Dim i as integerでした。
上のコードでもなぜか動きますが。

編集    削除
トラキチ  2002-04-23 02:20:01  No: 104202  IP: [192.*.*.*]

またまたすいません。よく考えたらiはいりませんね。
HTMLを解析するためのテストコードで使っていたんですが
書かなくても書いてもいいです。
帰ってきたばかりで10分でつくったもので気が動転してるようです。
ほんとごめんなさい。

編集    削除
高麗  2002-04-23 04:01:07  No: 104203  IP: [192.*.*.*]

トラキチさん、ちょっと改造してうまくいきました。
有難う御座います。
あと、CGI、別に嫌いじゃないです。むしろ好きです。
たかみちえさん、色々助言ありがとうございます。
参考にさせてもらいました。
無事解決しました。
どうもです。

編集    削除