現在、サーバ上であるシミュレーションを行っているのですが、PCでリアルタイムに途中経過をモニタしたいと考えています。ただ、複雑な方法は取りたくないため、UDPでPCにデータを送り、ブラウザ(+JavaScript)に表示させる方法がないか検討していますが、方法がわかりません。(数値を表示させる程度です。)
実際に動作するコードもしくは、解説しているサイトを教えてください。
(PCの環境は、Win7+IE9です。)
ブラウザでサーバからUDPで送られてくるデータを見たいのですが、可能でしょうか?
無理です。
ウェブブラウザで標準的に扱えるプロトコルは HTTP や FTP といったところですが基本的にクライアント(ブラウザ)から問い合わせて応答を得るようなプロトコルです。
シミュレーションを行うプログラムから、UDP でデータを垂れ流しにするということは無手順ということでしょうからブラウザには理解できません。
私が思いつく方法は二つあります。
・ファイルに出力した結果を CGI で切り取って受信する
シミュレーションをするプログラムがファイルに結果を時刻付きで書きだす。
そのサーバには CGI を配置して送られた時刻以降の結果を返す。
ブラウザでは最後に受信したデータの時刻を指定して、サーバの CGI に問い合わせる。
シンプルだと思いますがシミュレーションの実行時間が長くなるとどうしても遅くなります。
・ブラウザを使うのではなく、データを受信するプログラムを書く
Windows ということなので一番手軽なのは VBScript ではないかと思います。
標準では UDP を扱うことはできませんがこちらの OCX を使うと UDP の受信ができます。
http://homepage2.nifty.com/nonnon/Download/ScriptComTest/
UDP 通信をする VBScript のサンプルはこちらにあります。
http://kchon.blog111.fc2.com/blog-entry-135.html
データ送信の部分を割愛して、受診したデータの出力を MsgBox ではなく WScript.Echo でコンソールに書き出せば良いと思います。
ethereal → Wireshark ですよね。
ブラウザでサーバからUDPで送られてくるデータを見たいのですが、可能でしょうか?
無理です。
ウェブブラウザで標準的に扱えるプロトコルは HTTP や FTP といったところですが基本的にクライアント(ブラウザ)から問い合わせて応答を得るようなプロトコルです。
シミュレーションを行うプログラムから、UDP でデータを垂れ流しにするということは無手順ということでしょうからブラウザには理解できません。
私が思いつく方法は二つあります。
・ファイルに出力した結果を CGI で切り取って受信する
シミュレーションをするプログラムがファイルに結果を時刻付きで書きだす。
そのサーバには CGI を配置して送られた時刻以降の結果を返す。
ブラウザでは最後に受信したデータの時刻を指定して、サーバの CGI に問い合わせる。
シンプルだと思いますがシミュレーションの実行時間が長くなるとどうしても遅くなります。
・ブラウザを使うのではなく、データを受信するプログラムを書く
Windows ということなので一番手軽なのは VBScript ではないかと思います。
標準では UDP を扱うことはできませんがこちらの OCX を使うと UDP の受信ができます。
http://homepage2.nifty.com/nonnon/Download/ScriptComTest/
UDP 通信をする VBScript のサンプルはこちらにあります。
http://kchon.blog111.fc2.com/blog-entry-135.html
データ送信の部分を割愛して、受診したデータの出力を MsgBox ではなく WScript.Echo でコンソールに書き出せば良いと思います。
回答ありがとうございます。この方法で試したいと思います。
「ブラウザに表示させる」という縛りが無いのであれば、他の方も挙げられているWireshark(旧Ethereal)がお勧めです。
http://www.infraexpert.com/info/wiresharkindex.html
このへんを参考にインストールしてもらって、キャプチャ時にUDPの特定ポートのみ表示するようなフィルタを掛けてあげるといいんじゃないでしょうか。
例)DNSのパケットだけを表示したい場合
ディスプレイフィルタに「udp.port==53」と設定
回答ありがとうございます。この方法で試したいと思います。
2013/10/28 18:57:45