WEBページとアプリケーションとで、情報のやり取りを行う方法を教えて下さい。


<環境>
サーバ側
 OS:Linux
 WEBサーバ:Apache
クライアント
 OS:特に指定なし
 WEBブラウザ:特に指定なし

サーバ側では、Apacheと別のアプリケーションBを起動させておきます。
(アプリケーションBは自分で作成したプログラムです。)
クライアント側からサーバ側のURLを指定して、WEBページを開きます。
WEBページには、様々な情報入力エリア(ラジオボタン、チェックボックス、文字入力エリア)
及びその設定ボタンがあります。
(ページでの情報入力エリアは、CGIで実現しようと思っています。)

クライアント側から入力した情報をアプリケーションBに渡したいのですが、
どのような方法が考えられるでしょうか?
(データを渡すタイミングは、設定ボタンを押下した時)
また、
アプリケーションBから、
・WEBページを表示状況
・どのページを表示しているか?
等の情報も知りたいと思っています。

情報自体は、ファイルを介することでやり取りできるかとおもいましたが、
同期する術などがわかりません。

以上、
よろしくお願いします。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2007/05/31 16:30:13
  • 終了:2007/06/07 16:35:03

回答(3件)

id:openseed No.1

openseed回答回数51ベストアンサー獲得回数62007/05/31 17:30:02

ポイント27pt

アプリケーションBは、どのようなプログラムなのでしょうか?

常駐しソケット通信などを行うのでしょうか?


もし、Apacheモジュールなどで作成されていないのであれば、CGI(perlやPHP)などでWrapperを作成する必要があるように思います。


Apacheを利用しない場合、「アプリケーションB」とのデータをやり取りするインターフェースはどのような想定でしょうか?

たとえば、コマンドラインで可能であれば、標準入力と標準出力を利用して、アプリケーションB用のWrapperを作成すればよいと思います。

参考(PHP):

http://php.mirror.camelnetwork.com/manual/ja/function.popen.php

id:futurista

ご回答有難う御座います。

>>常駐しソケット通信などを行うのでしょうか?

ご指摘の通りです。

>>もし、Apacheモジュールなどで作成されていないのであれば、CGI(perlやPHP)などでWrapperを作成する必要があるように思います。

「Apacheモジュールなどで作成されていない」とはどういう意味でしょうか?

2007/05/31 17:43:51
id:garyo No.2

garyo回答回数1782ベストアンサー獲得回数962007/05/31 17:32:25

ポイント27pt

アプリケーションBをサーバーとして動かしておき、CGIのスクリプト(なりプログラム)が実行されたときソケットでアプリケーションBに接続して必要なデータ(現在表示したページなども含む)を渡すといいのでは。

http://q.hatena.ne.jp/answer

id:futurista

ご回答有難うございます。

「アプリケーションBをサーバーとして動かしておき、」

とは、どういう意味でしょうか?

2007/05/31 17:45:25
id:Mook No.3

Mook回答回数1312ベストアンサー獲得回数3912007/05/31 23:52:32

ポイント26pt

基本的には最初に回答された方のやり方ですが、

(1)Web でフォームを入力
(2)Submit で PHP を呼び出し、アプリケーションB を実行
(3)実行結果を表示

のようなやり方で出来ないでしょうか。


PHP(Perl でも考え方は一緒だと思います。) からの実行は system 関数で使用できます。

アプリケーションで必要な情報は引数として渡してあげればよいでしょう。


フォームで入力した値の参照は、PHPであれば extract 関数で変数として参照することが出来ます。

  • id:openseed
    独自のアプリケーションをApacheモジュールで作成した場合は、Apacheに統合できてしまうため、別のアプローチがあります。


    アプリケーションBと通信する既存のクライアントはあるのでしょうか?
    もし、これから作成されるのであれば、直接CGIから、アプリケーションBと通信するのではなく、Apacheに関係なく「アプリケーションB」と通信するクライアントを設計した後、クライアントをラッピングするCGIを書くのが良いと思います。
  • id:garyo
    >「アプリケーションBをサーバーとして動かしておき、」
    >とは、どういう意味でしょうか?
    アプリケーションBが何言語で書かれているのか分かりませんが
    c系で言えばsocketをlistenしている状態です。
    (ソケットを開いて特定のポートで接続待ちをしている状態)
    CGIから接続要求があればacceptしてthreadで処理させるといいでしょう。
    [ブラウザ]-(http)->[Apache]-(STD I/O)->[CGI]-(TCP/IP)->[アプリケーションB]
    という流れです。


    ↓クライアント    ↓サーバー 
    [CGI]-(TCP/IP)->[アプリケーションB]

    なので「アプリケーションBをサーバーとして動かしておき」となります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません