C# UDP发送图片

ijihkhjhg 2012-12-29 07:53:36
如题我把picturebox中的图片转换为二进制数组后用UDP发送出去,接收的时候吧这个数组转换为图片显示在picturebox中但是为什么显示的是一张全黑的图片?
发送:
UdpClient picUDP = new UdpClient();
try
{
//让其自动提供子网中的IP广播地址
IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 8001);
Image TempPic = pictureBox1.Image;
MemoryStream ms = new MemoryStream();
TempPic.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] bytes = new byte[ms.Length];
bytes = ms.ToArray();
//向子网发送信息
picUDP.Send(bytes, bytes.Length, iep);
}
catch (Exception err)
{
MessageBox.Show(err.Message, "发送失败");
}
finally
{
picUDP.Close();
}
接收
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
//在本机指定的端口接收
udpClient = new UdpClient(port);
IPEndPoint remote = null;
//接收从远程主机发送过来的信息;
while (true)
{
try
{
//关闭udpClient时此句会产生异常
byte[] bytes = udpClient.Receive(ref remote);
Data.remoteIP = remote.ToString();
worker.ReportProgress(0, bytes);
}
catch
{
udpClient.Close();
break;
}
}
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
toolStripStatusLabel1.Text = "客户端IP:"+Data.remoteIP;
byte[] Result = (byte[])e.UserState;
if (Result != null)
{
MemoryStream ms = new MemoryStream(Result,0,Result.Length);
Image image = Image.FromStream(ms);
pictureBox2.Image = image;
}
}
...全文
597 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xumingze0108 2014-04-13
  • 打赏
  • 举报
回复
您好,请问能不能把这个服务器和客户端完整的工程发给我,让我看一下。我也在用c#做UDP传图片,不是很懂。谢谢。
ijihkhjhg 2012-12-30
  • 打赏
  • 举报
回复
这个问题搞掂了吧发送的代码换成 IPEndPoint iep = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 8001); //把图片转换为二进制数组 pictureBox1.Image.Save("a.jpeg"); FileStream fileStream = new FileStream("a.jpeg", FileMode.Open, FileAccess.Read); BinaryReader binaryReader = new BinaryReader(fileStream); byte[] img = binaryReader.ReadBytes((int)fileStream.Length); binaryReader.Close(); fileStream.Close(); File.Delete("a.jpeg"); //向子网发送信息 picUDP.Send(img, img.Length, iep); 就可以了治愈为什么我也不知道,希望知道的告诉一下
  • 打赏
  • 举报
回复
这个不确定(没有测试)。 不过我可以确定的是,你可以将Image对象进行“二进制序列化/反序列化”,而不需要去Save和读取数据。
Go和分布式IM 2012-12-29
  • 打赏
  • 举报
回复
8字节~~~~~
Go和分布式IM 2012-12-29
  • 打赏
  • 举报
回复
看的头晕,只说一句注意New MemoryStream().Length是long类型

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧