我在客户端截取了一段图片,为什么传输到服务器端的时候只传了一半,大部分都是黑色.代码如下:
发送端: private void button1_Click(object sender, EventArgs e)
{
//建立终结点
System.IO.MemoryStream Stream = new System.IO.MemoryStream();
pictureBox1.Image.Save(Stream, System.Drawing.Imaging.ImageFormat.Bmp);//存储为bmp图象
byte[] b = Stream.ToArray();
//连接远程计算机
sendsocket.Send(b);
//发送 Stream.Close();
sendsocket.Shutdown(System.Net.Sockets.SocketShutdown.Send);
//关闭发送连接
sendsocket.Close(); //关闭本 //***********************************************************************************************************end*******************************************************// }接收端:
private void button1_Click(object sender, EventArgs e)
{
this.label2.Text = "图象正在传输中,请稍侯";
//设置接收数据缓冲区的大小
byte[] b = new byte[300000000];
System.Net.Sockets.Socket hostsocket = receivesocket.Accept();
//如何确定该数组大小
System.IO.MemoryStream fs = new System.IO.MemoryStream();
//接收数据
hostsocket.Receive(b);
fs.Write(b, 0, b.Length);
Bitmap Img = new Bitmap(fs);
pictureBox1.Image = Img;
Img.Save("e:\\MyJpeg.jpg", ImageFormat.Jpeg);
// this.Image1.ImageUrl = @"e:\MyJpeg.jpg";
//关闭写文件流
fs.Close();
//关闭接收数据的Socket
hostsocket.Shutdown(System.Net.Sockets.SocketShutdown.Receive);
hostsocket.Close();
this.label2.Text = "图象传输完毕";
}
发送端: private void button1_Click(object sender, EventArgs e)
{
//建立终结点
System.IO.MemoryStream Stream = new System.IO.MemoryStream();
pictureBox1.Image.Save(Stream, System.Drawing.Imaging.ImageFormat.Bmp);//存储为bmp图象
byte[] b = Stream.ToArray();
//连接远程计算机
sendsocket.Send(b);
//发送 Stream.Close();
sendsocket.Shutdown(System.Net.Sockets.SocketShutdown.Send);
//关闭发送连接
sendsocket.Close(); //关闭本 //***********************************************************************************************************end*******************************************************// }接收端:
private void button1_Click(object sender, EventArgs e)
{
this.label2.Text = "图象正在传输中,请稍侯";
//设置接收数据缓冲区的大小
byte[] b = new byte[300000000];
System.Net.Sockets.Socket hostsocket = receivesocket.Accept();
//如何确定该数组大小
System.IO.MemoryStream fs = new System.IO.MemoryStream();
//接收数据
hostsocket.Receive(b);
fs.Write(b, 0, b.Length);
Bitmap Img = new Bitmap(fs);
pictureBox1.Image = Img;
Img.Save("e:\\MyJpeg.jpg", ImageFormat.Jpeg);
// this.Image1.ImageUrl = @"e:\MyJpeg.jpg";
//关闭写文件流
fs.Close();
//关闭接收数据的Socket
hostsocket.Shutdown(System.Net.Sockets.SocketShutdown.Receive);
hostsocket.Close();
this.label2.Text = "图象传输完毕";
}
解决方案 »
- 退出主程序,启动升级程序时的错误
- 如何实现用datagridview中 点击单元格 就从数据库读书数据?
- 如何使用ffmpeg给视频问价添加水印
- C#送分问题3
- 请问哪里有关于GDI+方面的文章?我想学习学习,谢谢
- 请问怎么抓这个 Session 内的值
- 急!如何能获取系统当前所有打开的程序
- 我做控件时某个属性内容可能是固定的几个,像是TextBox中的TextAlign属性只有Left/Right等属性。我怎样才能把固定的这几个值在控件属性栏
- *.ps文件用什么打开?
- 怎么在c# 中,在webform1中点击一个button,弹出webform2
- tcp客户端判断服务器断开
- 请问:C#中,使用 Anchor 和 Dock 排列控件有什么区别?
private void button1_Click(object sender, EventArgs e)
{
this.label2.Text = "图象正在传输中,请稍侯";
//设置接收数据缓冲区的大小
byte[] b = new byte[2000001];
System.Net.Sockets.Socket hostsocket = receivesocket.Accept(); //返回实际接收内容的字节数
int bytes = 0;
//循环读取,直到接收完所有数据
while (true)
{
bytes = hostsocket.Receive(b, b.Length, 0);
//读取完成后退出循环
if (bytes <= 0)
break;
}
//如何确定该数组大小
System.IO.MemoryStream fs = new System.IO.MemoryStream(); fs.Write(b, 0, b.Length);
Bitmap Img = new Bitmap(fs);
pictureBox1.Image = Img;
Img.Save("e:\\MyJpeg.jpg", ImageFormat.Jpeg);
// this.Image1.ImageUrl = @"e:\MyJpeg.jpg";
//关闭写文件流
fs.Close();
//关闭接收数据的Socket
hostsocket.Shutdown(System.Net.Sockets.SocketShutdown.Receive);
hostsocket.Close();
this.label2.Text = "图象传输完毕"; }
如果有问题,
pictureBox1.Image.Save(Stream, System.Drawing.Imaging.ImageFormat.Bmp);//存储为bmp图象
修改成pictureBox1.Image.Save(@"c:\2.jpg", System.Drawing.Imaging.ImageFormat.Bmp);//存储为bmp图象
看看保存出来的图片有问题没有.
修改成pictureBox1.Image.Save(@"c:\2.jpg", System.Drawing.Imaging.ImageFormat.Bmp);//存储为bmp图象
看看保存出来的图片有问题没有.
修改成pictureBox1.Image.Save(@"c:\2.jpg", System.Drawing.Imaging.ImageFormat.Bmp);//存储为bmp图象
看看保存出来的图片有问题没有. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~保存出来的没问题