したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

VB2005のSocket通信の複数クライアントの非同期処理

5igoten:2011/02/11(金) 10:19:27
bufferに前のデーターが残ってしまう件ですが、調べてみました。
結論から言いますと、私のサンプルプログラムのミスです。

NetworkStream.BeginRead メソッドの2番目の引数 int offsetは
bufferの何処からデーターを格納するかの値です。

つまりデーターが残ってしまうように見えるのはデーターの途中から
格納してしまっているからです。


OnReadCompleteで全てのデーターを読み込んで、bufferの読み込み位置を
0にクリアーする為に
networkStream.BeginRead(buffer, 0, buffer.Length,callbackRead, null);
を入れています。

所が私のプログラムは、OnWriteCompleteの後に
networkStream.BeginRead(buffer, 0, buffer.Length,callbackRead, null);
を入れてしまいました。
これは誤りです。
何故なら私のプログラムは送信はボタンで任意の時にデーターを送る
仕様になっています。
従って、データー受信中に送信のボタンを押すと、読み込みバッファが
クリアされて途中からデーターを格納しはじめてしまいます。

従って正しくはひろさんのおっしゃる通りOnWriteCompletメソッドの中の
networkStream.BeginRead(buffer, 0, buffer.Length,callbackRead, null);
は不要と言うか入れてはいけませんでした。

サンプルプログラムは時間を見て訂正しておきます。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板