通过网络流发送数据出错了

时间:2014-05-19 19:09:16

标签: c# networking stream byte

我有以下代码发送数据: writer是一个NetworkStreamWriter实例。 img是一个Image实例。

writer.AutoFlush = true;
writer.WriteLine("picture");
BinaryWriter bWriter = new BinaryWriter(writer.BaseStream);
       MemoryStream ms = new MemoryStream();
           img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
           byte[] buffer = new byte[ms.Length];
           ms.Seek(0, SeekOrigin.Begin);
           ms.Read(buffer, 0, buffer.Length);
           bWriter.Write(buffer.Length);
           bWriter.Write(buffer);
           bWriter.Flush();
           ms.Flush();

然后,在客户端,我有一个接收代码:

var reader = new StreamReader(stream);
            string message = await reader.ReadLineAsync();
                BinaryReader breader = new BinaryReader(stream);
                int ctBytes = breader.ReadInt32();
                MemoryStream ms = new MemoryStream(breader.ReadBytes(ctBytes));
                Image img = Image.FromStream(ms);
                Bitmap bmp = new Bitmap(img, (int)System.Windows.SystemParameters.PrimaryScreenWidth, (int)System.Windows.SystemParameters.PrimaryScreenHeight);
                ShowImage(bmp);
                ms.Flush();
                breader.BaseStream.Flush();

发送代码每40毫秒运行一次,接收代码在一个循环内异步运行(当"图片"字符串发送时工作) 但接收代码仅适用于大约4次迭代,之后ctBytes变为负数并抛出异常(您无法读取负数字节)。 我不知道出了什么问题。

0 个答案:

没有答案