こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

他のマシンでアプリケーションの起動状態の確認方法

現在以下のような構造の装置を立ち上げようとしています。

サーバマシン1台
クライアントマシン3台

クライアントはそれぞれ異なった検査を行う。
ただしその検査内容は一連の流れであり、クライアントマシンで検査しているものが正しいかどうかをサーバマシンで一元管理したい。


この構造を作るのにクライアント側からサーバ側の管理アプリケーションが立ち上がっているかを確認し、確認ができたら装置が稼動するという形を現在構想しています。

RS-232Cポートは別の用途で使ってしまうので、できればこれをLAN経由で実現したいと思っています。

出来ればクライアント側からPostMessageでメッセージを投げ、その応答をサーバがPostMessageで返す、という形で起動確認ができればと思っていますが、こんなのは実現可能ですか?
ちなみに別の用途でSQLも使おうと思っています。
また、XP SP2の場合、LAN経由での通信にファイアーウォールが邪魔をしないでしょうか?

サーバはWin2003Server,クライアントはXP SP2,開発言語はVisual Studio 6.0 Visual C++ SDKを予定しています。
ちなみにPostMessageを使えるならハンドルを取得する必要があると思いますが、他のマシンのハンドルをFindWindow等で取得することは可能なのでしょうか?

PostMessageが使えなくとも取りあえず起動しているか否かが分かればよいと思っています。

ご意見・ご返答・助言どなたかお願いします。

投稿日時 - 2006-05-14 00:27:37

QNo.2149676

困ってます

質問者が選んだベストアンサー

基本的に、PostMessage ではできません。
FindWindow もローカルが対象です。

お望みの動作はほかの手段、WinSock とか Mailslot とかで通信することになるかと思います。

また、Windows XP に限らず、(パーソナル)ファイアウォールで使用するポートをブロックしていれば、もちろん通信はできません。
必要なら使用ポートを空ける設定をしてください。

# VC6はMicrosoftのサポートが完全に切れているので、
# 商用での利用はお勧めしません。
# (Win2003,XPはおろかWin2000発売よりも古い代物…

投稿日時 - 2006-05-14 05:00:18

お礼

ありがとうございます。
やはり、PostMessageは無理ですか・・・・
うちの会社ではVisual studio 6.0以上を買ってくれません。
(というか.netが使えない代物だったのでみんな6.0を使っている)

まぁ社外にソフトを出すことはないので、問題はないと思うのですが。。。

投稿日時 - 2006-05-14 10:46:08

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

 通常は通信プログラムを作成してクライアント・サーバモデルで構築します(VC++6のサンプルを参照すれば、使えるものが幾つもあります)が。。。。
 例)VC++6のHELPで、以下の様に検索してください。
   「 Windows ソケット クライアント アプリケー
    ション」
  この中のCHATTERなど宜しいのでは。。
(PS)
 失礼ですが、その様な経験があまり無いように受け取れますので、簡単な裏技として単純にファイルを作成する事で代用する方法も有ります(環境的に使えるかは疑問ですが。。)

1)共有フォルダーをサーバに作成
2)クライアントは共有フォルダーに起動時に決まった  ファイルをopenする。
3)クライアントは終了時に2)のファイルをcloseする
4)サーバは、上記ファイルが無ければ、クライアント
 が起動していないと分かる。
5)ファイルが有っても、削除できればクライアントは
 起動していない事がわかる。
6) ファイルが有り削除できない場合は、クライアン
 トが起動している事になる。

 。。。あくまでも、簡単な裏技として。。あまり、お薦めはしませんが。。。
 

参考URL:http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vcsample/html/_sample_mfc_CHATTER.asp

投稿日時 - 2006-05-15 17:38:48

お礼

ありがとうございます。

ファイルを使う方法ですが・・・それも別々のマシンから同じファイルを見にいくという・・・・ちょっと恐い構想ですね。

確かにネットワーク系はほとんどやったとこがありません。
せいぜいSQL止まり。。。。。。
(ソフト会社の人にしたら大したことほとんど知らないのかも)

R2-232Cを使ってメカと通信・・・というのはよくやるのですが。。。。

SQLを使って実現する方法も考えましたが。。。異常事態が起こったときにトラブルが起きそうなので、アプリ同士で通信できないかと思ったのです。

これごときに232C使うのはもったいないですが、でもその方がよさそうですかね?

ありがとうございました。

投稿日時 - 2006-05-15 21:08:11

ANo.2

#1です。

事情がおありなのでしょうし、本旨とは関係ないのですが。
.NET framework は別として、
VC.NET2003のネイティブコンパイラ(VC7.1)やSTLは格段にVC6よりよくなってますし、MFC7も悪くないと思います。
.NET2002は枯れてなくて痛いですが…評価されたのはこれなのかも。

投稿日時 - 2006-05-15 12:57:20

お礼

どうなんでしょう?

VCの環境も段々オブジェクト指向に進みすぎて、使いにくい部分もあるように思います。

うちのチームは出来るだけMFCではなくSDKを使うようにしてるくらいですし。。。

ちなみにVisual Studio 2003なんかでもデバドラの開発って出来るんですかね??
(これは興味の範囲で聞いてます)


うちはソフト会社ではないので、電気屋さんや製造やメカにはお金を出してくれますが、ソフト屋さんにはなかなか出してくれないのです。。。悲しい現状です。

投稿日時 - 2006-05-15 21:14:38

あなたにオススメの質問