C♯相談室 Part4
■ このスレッドは過去ログ倉庫に格納されています
0382デフォルトの名無しさん
NGNGサーバはパケット冒頭にデータの長さを送信して、
次にその長さだけデータをを送信します。[1]
そこで[2]のようなコードでクライアント側で受信しようとしました。
しかし[3]のコードが実行された時に、まだデータがサーバから受信しきれていない場合
受信できてない後半部分は0で埋められ、バッファ(data)に格納されてしまいます。
私の考えでは、すべて受信するまで[3]で待機すると思っていましたがどうも違うみたいですね。
この場合の対処としては、[4]みたいにしたのですが、駄目でした。
どうすればいいでしょう。長文申し訳ない。
[1]
[データの長さ|データ中身]<---パケットの形式
[2]
NetworkStream netStream = TcpClient.GetStream();
BinaryReader reader = new BinaryReader(netStream);
short dataLength = reader.ReadInt16();//データの長さを読む
byte[] data = new byte[ dataLength ];
reader.BaseStream.Read( data , 0 , data.Length);//データを読む[3]
[4]
TcpClient.ReceiveBufferSize = data.Length;
■ このスレッドは過去ログ倉庫に格納されています