今、.NETでソケット通信を行っているのですが、
サーバー側で受信待ちで待っている(クライアントが切断するまで受信待ち)の無限ループになっているのですが、クライアントから受信したメッセージをメッセージを受信するごとに通信ログとして画面上に表示させたいのです。
受信待ちの無限ループになっているということで、画面上には表示できないのでしょうか??
ちなみに、受信無限ループはクラスで動いています。
すいませんが、教えてください。
どんなコーディングになっているか解りませんが、
私も24時間監視システムで、VB.NETでソケット
通信を利用して、ネットワーク上からの受信を受
付、画面にそのログを表示させています。
当然、ソケット通信部分は、クラスになっていま
すが、動いております。
簡単に言いますと、ソケット通信のクラスをNew
する際に、その元のフォームをクラスに渡して、
参照させるような方法で実現させていますが・・・
ご検討下さい。
以上。
通信クラスでフォームのクラスを作成し、メッセージを受信するたび、
フォームクラスで作成したリストボックス表示するメソッドを呼び出しています。
しかし、受信中にはリストボックスへの表記はなく、クライアントが通信
を切断した時点で、リストボックスに書き込まれた内容が表示される
という感じです。
メッセージを受信するごとに、リストボックスでメッセージを表示させたいのです。
元のフォームをクラスに渡して、参照させるような方法
というのは、
Dim clsSocket as new clsSocket
Dim frmMain as new frmMain
clsSocket.sock(frmMain)
ということでしょうか??
表示したいフォームの先頭でオブジェクトを
宣言しておき・・・
Private objSocket as clsSocket
Form1_Load にて・・・
objSocket = New clsSocket.sock(Me)
とすることになると思いますが・・・
やり方はいろいろあるので、この方法!と言うものが無い
と思います。
また、バシバシソケット通信がある場合、バッファリングしない
と都度、画面表示を伴う受信を行なった場合、応答性が極端に、
低下します。
受信データを、ArrayListで宣言したオブジェクトに保存し、
表示側スレッドとかタイマーで、後からゆっくり画面に表意させ
るとか・・・
ご参考までに・・・
以上。