关于Socket与Unity之间的传输数据UDP协议《一》

一、UDP的优势
UDP相对于TCP的优势主要有三个方面的:
(1)UDP速度比TCP快。
由于UDP不需要先与对方建立连接,也不需要传输确认,因此其数据的传输速度比TCP快很多。对于一些着重传输性能而不是传输完整性的应用(网络音频播放、视频点播和网络会议等),使用UDP协议更加适合,因为它传输速度快,使通过网络播放的视频音质好、画面清晰。
(2)UDP有消息边界。
通过UDP协议进行传输的发送方对应用程序交下来的报文,在添加首部后就向下直接交付给IP层。既不拆分也不合并,而是保留这些报文的边界,所以使用UDP协议不需要像TCP那样考虑消息边界的问题,这样就使得UDP编程相对于TCP在接收到的数据处理方面要简单的多。(对于TCP消息边界的问题可以查看相关的文档,在这里我就不列出来了)
(3)UDP可以一对多传输(可恶的多播组!!!)
由于传输数据部建立连接,也就不需要维护连接状态,因此一台服务器可以同时向多个客户端发送相同的信息。利用UDP可以使用广播或者组播的方式同时向子网的所有客户端进程发送信息,广播和组播的介绍放到后面TCP编程中介绍。
二、使用UDP传输数据的思路
1、客户端
客户端可分为2大块 发送消息和监听消息
①、发送消息给服务器
首先定义一个socket使用udp协议,客户端需要绑定自己的ip;
然后定义一个监听端口来监听服务器发来的消息(可以写一个固定的服务器端口ip和端口号),
使用SendTo的方式来发送消息;
②、监听服务器的消息
客户端监听消息使用了线程;
使用的时候在Update实时监听服务器给发的消息
2、服务器端
服务端也分为2大块(发送消息和监听消息)
①、发送消息给单个客户端(也就是属于单播发送)
同客户端首先定义一个Socket使用udp协议,服务器也要绑定自己的ip;
由socket可得知哪个客户端给服务器发的消息,即便服务器使用socket回消息给客户端
②、发送消息给所有的客户端(属于多播组发送)
见下文。。。。。。。
③、监听各个客户端的消息
由于多个客户端给同一个服务器发消息,这时候需要使用到IPAddress.Any来监听局域网下的所有的客户端
三、测试结果
此时拿来了三台电脑,一个服务器,二个客户端测试,客户端给服务器发消息,服务器能收到没问题;
那么问题来了,服务器回消息的时候只是发给了最后一个连接服务器的客户端。

很明显,服务器并没有广播消息,只是给其中固定的一个客户端发送了消息,没有做到同步,见下文解决这个问题;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 传输层提供的服务 传输层的功能 从通信和信息处理的角度看 ,传输层向它上面的应用层提供通信服务,它属于面向通信部分...
    CodeKing2017阅读 3,813评论 1 9
  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 1,386评论 0 10
  • 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编...
    程序员欧阳阅读 2,125评论 1 37
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,411评论 6 174
  • 参考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麦子阅读 3,081评论 0 14

友情链接更多精彩内容