- PR -

Winアプリでのソケット接続とShellとスレッド

1
投稿者投稿内容
たけ
会議室デビュー日: 2005/07/28
投稿数: 3
投稿日時: 2005-07-28 19:39
こんばんは

VB.Net Win2000で以下のようなアプリを作成したいのですが、よいアドバイスやサンプルなどがありましたらよろしくお願いいたします。

1.一つのWindowsフォームを起動させ、ソケットの接続を待つ(パラメータを持たせている)。
2.その受け取ったパラメータを取得後、別のプログラムを起動させて待機(起動させたものだけ待機させ、ソケットの接続待ちを行う) つまり接続があるたびにプログラムが起動する
3.2で起動したプログラムの終了を待ち、その結果を接続されたプログラムに対して返す。

もし御存知でしたら教えていただけますでしょうか?
よろしくお願いいたします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-07-29 11:39
引用:

たけさんの書き込み (2005-07-28 19:39) より:
1.一つのWindowsフォームを起動させ、ソケットの接続を待つ(パラメータを持たせている)。
2.その受け取ったパラメータを取得後、別のプログラムを起動させて待機(起動させたものだけ待機させ、ソケットの接続待ちを行う) つまり接続があるたびにプログラムが起動する
3.2で起動したプログラムの終了を待ち、その結果を接続されたプログラムに対して返す。


Socketのハンドルを別プロセスに渡すことも不可能ではないけど、APIを使ったVB.NETらしくないコードになってしまうと思うのでお勧めはしません。VB.NETでコンソールアプリケーションを作成し、Socketからの入出力をコンソール入出力にリダイレクトさせるがよいかと思います。要は一般的なCGIの真似ですね。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-07-29 13:43
引用:

1.一つのWindowsフォームを起動させ、ソケットの接続を待つ(パラメータを持たせている)。



ここで言う「パラメータ」とは何ですか?
2 で起動する「別プログラム」のコマンドライン引数ですか?

引用:

3.2で起動したプログラムの終了を待ち、その結果を接続されたプログラムに対して返す。



「結果」はどのような形式で返すのですか?
「別プログラム」の標準出力ですか?

たけ
会議室デビュー日: 2005/07/28
投稿数: 3
投稿日時: 2005-07-29 15:06
甕星様 渋木様

ご返答ありがとうございます。

・甕星様
 コンソールアプリケーションでの作成を行ったことがないため、ただいま調べています。
 (VB.Netは初心者です)
 イメージ的には、おっしゃるとおりCGIみたいな感じです。

・渋木様
 失礼しました。
 1.パラメータは別のLinuxサーバのcgiからWinサーバに
「http://xxx.xxx.xxx.xxx:12345にa=123&b=456c=789」みたいな感じでソケットで接
   続するイメージです。

 2.結果は別プログラムから標準出力を返し、最終的には最初に呼び出されたLinuxサーバに
   対して返す予定です。
   
   修正です:別プログラムを呼び出したプログラムは別プログラムが返す標準出力の結果を 
   そのままLinuxサーバに返す予定です

[ メッセージ編集済み 編集者: たけ 編集日時 2005-07-29 15:09 ]
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-07-31 13:14
それってまんまHTTPサーバーじゃないですか?
だったらApache等の一般的なHTTPサーバーのインターフェースを、そのまま踏襲すればよいでしょ?一般的なCGIアプリケーションの作り方を解説している参考書を見れば、どのようなインターフェースを取っているのか察しが付きますよね?
踏襲する上で標準入出力をリダイレクトする方法が分からないとか、別プロセスを起動する方法が分からないとか、プロセスの終了を待つ方法が分からないなら、それぞれについて個別に聞いては如何ですか?
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
たけ
会議室デビュー日: 2005/07/28
投稿数: 3
投稿日時: 2005-08-01 11:17
甕星様

そうなんです。機能的にやりたいのはHTTPサーバーと同様なのですが、その制御を行う
フォームを作成したかったのです。

もう少し別の方法で考えてみます。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)