C# TcpClient接收数据出错问题
大侠们我刚学C#网络编程,遇到了个问题请帮下忙。
【接收方】
............ //上面是连接代码没有出错的
while (true)//这是一个截屏的程序,发送方每次都将自己的屏幕转为字节数组发送
{
byte[] L= new byte[sizeof(int)];
net.Read(L, 0, sizeof(int)); //L字节数组接收将要接受的图片的大小
int len = BitConverter.ToInt32(L, 0); //转为整型
byte[] b = new byte[len]; //创建图片的字节数组
net.Write(b, 0, 1); //告诉对方可以发送了
net.Read(b, 0, len); //阻塞接受图片数据
//////////////////////////////////下面的代码是转为BitmapImage并显示的这个没错
MemoryStream ms = new MemoryStream(b);
Bitmap bmp = (Bitmap)Bitmap.FromStream(ms);
IntPtr ip = bmp.GetHbitmap();
this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, new ChangeImage(changeImage), ip, index);
/ ////////////////////////////
net.Write(b, 0, 1); //告诉发送端可以发下一张了
}
【发送端】
................
while (true)
{
byte[] b = BitmapTobytes(GetScreenSnapshot()); //获得屏幕并转为字节数组
byte[] L = BitConverter.GetBytes(b.Length); //将屏幕的字节数组的大小转为字节数组
net.Write(L, 0, sizeof(int)); //发给接收端将要发送的图片大小
net.Read(L, 0, 1);//暂停 //等到通知可以发送图片信息了
net.Write(b, 0, b.Length); //阻塞发送图片信息
net.Read(L, 0, 1); //等到通知可以发送下一张
}
以上就是我的代码,一般是运行了一会儿(大概几秒后)就会出现问题说是 Bitmap bmp = (Bitmap)Bitmap.FromStream(ms)参数错误,也就是ms有问题。请大侠们帮忙看下。还有就是如果我把两端中间那两句等到通知的代码去掉,发送端加上Thread.Sleep(10)就一直成功运行没有错,我学的基础不好实在看不出到底为什么,拜托了!!!