投稿日 | : 2007/01/17(Wed) 23:23 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^3: VBからネットワークファイルを1秒に1回監視する |
>>> マシンが2台存在(A,B)し、Aでファイルを更新します。
>>> Bでは、ネットワークを介して、ファイルが変更されたか
>>> どうか、1秒に1回監視します。
>> 監視側が、更新されたかを定期的にチェックするのではなく、その逆に
>> 変更した側が、監視側に通知する形態にすれば、通信回数は大幅に減りますね。
> 具体的には、どのような通知方法がありますか?
具体例、ですか。えぇと…現状は、
A は、自身の C:\folder\file.txt (共有名: \\pc_a\folder\file.txt) を、不定期に更新する。
B は毎秒、\\pc_a\folder\file.txt が更新されているかをチェックする。←通信負荷が大きい
のようなイメージで良いでしょうか?
だとすれば、それをたとえば、
A は、file.txt を更新した後、B にファイルを作成する。(\\pc_B\notice\end_of_a.txt)
B は毎秒、自身に end_of_a.txt が作成されたかを DIR で監視し、作成されていた場合のみ、
\\pc_a\folder\file.txt を取得するようにする。
という仕様にすれば、ネットワーク上の通信回数は、最低限になりますね。
さらに、この仕様にある「B が毎秒、自分の HDD を読み取る」という物さえも省きたいなら、
A が B に、任意の「変更通知」を MSWinSock なり、DCOM なりで投げる。
という手段もあるでしょうし、あるいは、
B に 監視アプリを常駐させるのではなく、A が、「B に exe を実行させる」ようにする。
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/sept04/hey0901.mspx
とか、
VB6 製の IIS Application を B 上に配置し、A が、その URL を呼ぶようにする。
といった手もあるかも。