Unity3d使用socket传输图片

C# socket通信只能传输的字节流,所以 我们若是想利用socket传输任何东西,都必须将之以字节的形式进行传输

So 本文就抛砖引玉一下,以传输图片的形式来示范一下,socket传输除文本数据以外的数据   嘻嘻~~~大笑


既然是网络通信,那必然是有客户端和服务器端(通俗点说就是一发一收),那么就先说说客户端的那些事情吧!!!
(ps:如果,不知道客户端是什么的兄弟们,请不要往下看了,先去恶补恶补网络通信的一些知识)

在客户端,如果不说初始化socket那点事,那么,就只做一件事儿,就是将图片转换为字节数据,以便后边用Send函数进行传输,好吧,话不多说,直接上代码
private byte[] fssize; 
FileStream fs = new FileStream("D:/girl.jpg",FileMode.OpenOrCreate,FileAccess.Read);
Msg.fssize = new byte[fs.Length];
BinaryReader strread = new BinaryReader(fs);
strread.Read(Msg.fssize,0,Msg.fssize.Length);
上边4行代码做了这么几件事情:
1.定义一个需要被传输的字节数组fssize
2.创建FileStream对象,并基于该对象创建了BinaryReader对象
3.调用BinaryReader下的Read方法将数据读入fssize数组里边


当然,个个函数的具体参数是什么意思,我这里不展开阐述,查查MSDN就明白就可以了解的
我这里是将D盘的一张名为girl的图片转换为字节,这里要注意,要将图片的属性也写出来即D:/girl.jpg不能写成D:/girl

over 客户端就这样的over了,来我们接着说说服务器端,也就是接收端,同样接收端要是撇卡初始化的那点事儿,那么,也变得尤为的简洁了,也就是将接收到的数据还原为图片
当然,我这样说肯定很多人就默默的笑了,你不是废话的麽,肯定要还原的呀!!!哈哈   那就看看 如何还原的吧
//这里开辟了1M的字节空间 也就是一次图片的传输最大是1M大小
byte[] bytes = new byte[1024*1024];
int got = Soc_Temp.Receive(bytes);
// 将接受到的数据写入内存
MemoryStream fs = new MemoryStream();
fs.Write(bytes,0,got);
//使用Image类从内存中再次将数据读出来并保存为jpg图片
//注意 这里 无法保存在C盘
Image Img = Image.FromStream(fs);
Img.Save(desPathName,ImageFormat.Jpeg);
Debug.Log("保存完毕!!!");
//记得关闭流对象的哦
fs.Close();  
注意,这里使用Image类下的save方法,不能将数据保存在C盘,我之前就是在这里卡住了 哭,切记.切记
同样的,每个函数具体是神马意思,我就不展开阐述的了,翻阅MSDN你知道会比我这里讲述的更多....Everybody know that!!!!

OK,上边,上边只是讲了讲核心的部分,下边我将会将完整的代码贴出来,主要实现的一个功能是&#x
  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值