2008年04月14日

VB.NETでUDP非同期通信

(少々内容の修正をしました)

複数のマシン上で起動するあるプログラムにおいて、相互に他のマシン上で稼動している同プログラムが、正常に稼動しているかどうかを監視する必要が出た。
方法論としては、たとえばDBサーバに対してログを記録しつつ、それを参照したりといったスター型の構築も出来た(そして今考えれば、そっちが多分簡単だった)けど、ここはあえて、プログラム間で相互に通信を行うことで、他のプログラムの稼動状況を監視してみよう、と思い立った。苦難の道の始まりだったのだけど。
 
プログラム間で相互に小さなメッセージをやりとりすることで監視する、という方法論に適しているのは、やはりオーバヘッドが少なく、かつ接続を占有しないUDPだろうと思う。最大で10台くらいが相互に監視しあう状況になるので、わざわざTCPでコネクション貼ることもないだろう。
 
開発言語はVB.NET。すなわち.NETフレームワークの世界でそれを記述することになる。
.NETフレームワーク2.0では、きっちりUDPの非同期通信がサポートされている。
 
System.Net.Sockets.UdpClientがそれだ。
 
まず不特定との相手先と通信するためのソケットをインスタンスとして生成する。
 続きを読む
posted by Tig3r at 15:31| Comment(1) | TrackBack(0) | VB.NET

2008年03月19日

VB.NETでPingを打つ

さて、今回製造するアプリケーションでは、ネットワークの生死監視を行うにあたり、Pingを利用することになっている。ということで、VB.NET環境化にICMPスタックを組みこまなくてはならな…
 
…いなんてことは多分ないはずだ。.NET環境でそのあたりがカプセルされたクラスがきっとある。ぐぐって1ページ目にきっとある。
 
あった。My.Computer.Network.Pingメソッド。
Systemクラスへの別な、そして簡易なアクセス手段として、Myクラスが提供されている。
 
じゃあ、Pingを打ってみよう…続きを読む
posted by Tig3r at 16:52| Comment(0) | TrackBack(0) | VB.NET

2008年03月17日

.NET環境下でプロセス一覧の取得

さて、遅ればせながら仕事で.NET環境に触れることになったわけだが、今まで持っていたWin32API関連の知識があまり役立たないことに驚いている。
とはいえ、Web上に情報がかなり多いので、そんなに困らないわけだが。
 
今回困っているのは、INIファイルの読み書き、Winsockの利用、プロセス一覧の取得、などだが、そのうちプロセス一覧の取得について、ざっとテストプログラムを書いてみたら思いのほかうまくいったので覚書。
 
なお、System.Management名前空間を利用しているので、参照の追加をしておく必要がある。
 続きを読む
posted by Tig3r at 17:07| Comment(0) | TrackBack(0) | VB.NET