HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0425
OKHSPLetで hspsockAを使って自分のIPアドレスが調べられない13解決


OK

リンク

2010/4/25(Sun) 20:40:41|NO.32253

再び失礼します。
今回もHSPLetについてです。

hspsockAのipget命令で自分のIPアドレスを取得させて、
他のPCからつなげてチャットを作ろうとしたのですが、
ipgetで取得したアドレスが、毎回「127.0.0.1」と表示されてしまいます。

サーバー上に置いたり、他のPCで見てもやはりアドレスは「127.0.0.1」でした。
(HSPLetを使わずに取得したら きちんとした自分のIPアドレスが得られました。)

調べてみると、127.0.0.1はローカル・ループバック・アドレスと呼ばれる、
自分自身を指すIPアドレスだそうです。

これは、HSPLetのアプレットでは、サーバーとして使うことはできない、
ということなのでしょうか。



この記事に返信する


f(布団中)

リンク

2010/4/25(Sun) 23:05:33|NO.32254

>これは、HSPLetのアプレットでは、サーバーとして使うことはできない、
>ということなのでしょうか。

そもそも、そんな

「ページの更新する度に再起動するような落ち着きの無いサーバ」

で良いのか?
作るのは自由だと思うが。



f(布団中)

リンク

2010/4/25(Sun) 23:10:38|NO.32255

とりあえず「127.0.0.1」と帰ってくるのはともかく。

ページを開いているPCのローカルアドレスが分かったところで(LAN内onlyなら出来るが)
外部との通信は出来ないぞ。

取得するべきIPが違う。
必用なのはグローバルIPで、さらにポート開放も必要になるだろう。



OK

リンク

2010/4/25(Sun) 23:37:01|NO.32258

返答ありがとうございます。
チャットというのは少し間違いで、今後通信協力して遊べるゲームに発展させるための
土台としてチャット機能を持たせようと思ったのです。説明不足だったことをお詫びします。

クライアント側がサーバー側のIPアドレスを入力して通信するという
サーバー&クライアント型のチャットがHSPLet上で行えないか悩んでいます。
サーバー側がhspsockAのipget命令でIPアドレスを取得しようとしても
いつも同じ127.0.0.1が出てしまうのです。



OK

リンク

2010/4/26(Mon) 00:37:18|NO.32261

コードが長いので参考を挙げますと
http://www.placeark.com/
このサイトの プログラミング→HSP→サンプル にある「チャットを作る」を
HSPLetで動かしたい という試みです。
サーバー側のIPアドレスは また別の通信方法で教えることになります。
本末転倒ですが…



ANTARES

リンク

2010/4/26(Mon) 00:47:24|NO.32262

 すみません。いいのかもしれないと思って削除してしまいました。
HSPletには詳しくないので回答はできませんが、
クライアントのIPを知りたいだけなら、PHPかperlを勉強した方が
早いような気がします。

 PHPなら「$_SERVER['REMOTE_ADDR']」がクライアントのIPアドレスになります。



ANTARES

リンク

2010/4/26(Mon) 00:54:45|NO.32263

 「いいのかもしれない」と思ったのは、「サーバー側で
そのアプレットを起動してファイルに保存すればいい」と
思ったのですが、HSPletではファイル出力ができなかったと思います。

 取得したIPアドレスはどうするつもりですか?



OK

リンク

2010/4/26(Mon) 01:00:26|NO.32264

サーバー側のIPアドレスにクライアント側が接続して通信させたいのです。

PHPやperlを使うと言う離れ業を試してみたいとは思いますが
PHPで出た値をHSPLetに送る術がよくわかりません。



ANTARES

リンク

2010/4/26(Mon) 01:32:20|NO.32265

>サーバー側のIPアドレスにクライアント側が接続して通信させたいのです。
 だから、クライアント側にどうやって知らせるのですか?
「サーバー側のIPアドレスは また別の通信方法で教えることになります。」
とありますが、何処かに保存しないと「別の通信方法で教える」のは不可能です。

>PHPで出た値をHSPLetに送る術がよくわかりません。
 PHPやperlならサーバにファイル保存できます。
HSPLetもサーバファイルの読み込みはできるはずです。

 PHPが使えるサーバをお使いのようなので、
ファイル保存のルーチンも書いておきます。
ただし、未検証です。
「severip」がファイル名です。

$file=@fopen('severip','w');
fputs($file, $_SERVER['REMOTE_ADDR']);
fclose($file);



ANTARES

リンク

2010/4/26(Mon) 01:45:02|NO.32266

 ローカルマシンでWWWサーバを起動してperlのクライアントIP表示スクリプトを
起動したら127.0.0.1と表示されたので、
もし、「127.0.0.1」がローカルでテストした結果なら、
サーバにアップロードしてテストすれば変わるかもしれません。



OK

リンク

2010/4/26(Mon) 02:33:10|NO.32269

ANTARESさん、沢山のご助言ありがとうございます。
クライアントに伝える方法は、また別のチャットやメールを使ってもらうという
本末転倒な手段を考えていました。 最終目標がゲームだったので、それでもいいと妥協していました。
今後はPHPと連携して進めていきたいと思います。



f(飲茶中)

リンク

2010/4/26(Mon) 08:50:47|NO.32270

・・・んんん?
・・・なんか腑に落ちんけど、本人納得しているのなら良いか・・・。

cgiで自分のグローバルip取得をやってみる算段のようだし自力で気付くだろ・・・。



テック

リンク

2010/4/26(Mon) 17:45:46|NO.32272

>これは、HSPLetのアプレットでは、サーバーとして使うことはできない
結論からいいますと、アプレットでは、サーバーとして使うことはできないです。

http://oyabunn.hp.infoseek.co.jp/hsp/whats_hsplet.htm
上記URLで、HSPLetについて調べてみました。
HSPLet・・・
 プログラミング言語ではなく、HSPをJavaソースに変換し、
 変換したJavaソースをコンパイルするツール。
アプレット・・・
 他のアプリケーションの中に組み込まれて実行される小さなプログラムとのことである。
 多くの場合、アプレットを動作させるアプリケーションはWebブラウザである。
 アプレットという単語はJavaアプレットの略称として用いられることも多い。

上記のように、アプレットはWebブラウザに組み込まれて実行される小さなプログラム
であり、Webブラウザ自体が、サーバーに対して「Webページを見たい」など
リクエストするクライアントだからです。
また、「15歳からはじめるJavaオンラインゲームプログラミング教室」
(出版:株式会社ラトルズ、著者:大槻有一郎)
に書いてありましたが、
Java Web Startで実行するプログラムは、Javaアプリケーションそのものなので、
基本的には、Java全ての機能が使えます。
しかし、Webから簡単に実行できると言う性質上、
何でも出来てしまうと危険すぎるためサンドボックスという
セキュリティ機能によって動作が制限されます。
デフォルトでは、以下の制限があります。
・ローカルディスク(手元にあるパソコンのハードディスク)にアクセスできない
・すべてのJARファイルを同一ホスト(Webサーバー)からダウンロードする必要がある
・JARファイルのダウンロード元のサーバーとしか通信できない
・セキュリティマネージャ(Javaのセキュリティ設定を変更するクラス)は
 インストールできない
・ネイティブライブラリ(ローカルパソコンにインストールされているライブラリ)は使用できない
・システムプロパティ(パソコンの環境設定)へのアクセスが制限される

上記の理由から、アプレットでは、サーバーとして使うことはできません。

http://hsp.tv/play/pforum.php?mode=all&num=32131
OKさんは、過去でもHSPLetについてスレを立てているみたいですが、
HSPLetを使用して最終的にできるのは、Javaプログラムなので
Javaの知識を持っていたほうがいいと思います。
>HSPLetはHIROMIさんが作られましたが、現在はYukiさんが引き継がれています
またHSPLet自体について疑問があるのであれば、
ここではなく、HSPLetを引き継がれた方に聞くのがいいと思います。



OK

リンク

2010/4/26(Mon) 23:51:10|NO.32278

なるほど、こんなに大量に教えていただいて恐縮です。勉強になりました。
hspsockで通信ができたので、他のアプレットとも通信できると
勘違いしていたようです。
実際持ち前のサーバで試したところ、いくら試行錯誤しても
アプレット同士がつながることはありませんでした。

今後HSPLetで疑問があったらJavaについて調べるようにしてみます。
テックさんありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.