iOS-UDP无线局域网通讯的简单使用

iOS-UDP无线局域网通讯的简单使用,第1张

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,UDP传送数据不需要和服务器连接,只需要知道ip和监听端口,不需要链接没有目的的socket,只是将数据报投递出去,不管接收方是否成功接收到,因此是一种不可靠的传输。但是UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。

1.无连接,发送数据之前不需要建立连接。开销和发送之前的时间延迟较短。 2.尽最大努力交付。(可以采取一定策略实现可靠传输) 3.面向报文,UDP对应用程序交付的报文,添加UDP首部后直接交给IP层。不合并,不拆分。 4.没有拥塞控制,网络拥塞不会使源主机发送率降低。 5.UDP支持一对一,一对多,多对一的交互通信 6.UDP首部开销较小,8字节(TCP为20字节、IP为20字节)

1.AsyncUdpSocket

2.GCDAsyncUdpSocket

在项目中,所用到的类库是AsyncUdpSocket,所以这里基于AsyncUdpSocket对UDP开发做一个简单的文档说明:

1.将AsyncUdpSocket.h, AsyncUdpSocket.m文件拷贝到项目中。在项目target ->build phases ->compile sources ->AsyncUdpSocket文件后面加入 -fobjc-arc ,这是为了使编译器编译的时候将此文件在arc的条件下编译。

2.添加CFNetwork.framework

初始化socket,设置代理,绑定端口号

心跳包就是广播255.255.255.255,确保在同一局域网的都能收到心跳

AsyncUDPSocketDelegate的代理方法

传送门

计算机里的UDP报文协议只在 IP 的数据报服务之上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。

UDP的主要特点是:

(1)UDP 是无连接的。即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。

(2)UDP 使用尽最大努力交付。即不保证可靠交付,因此主机不需要维护复杂的连接状态表(这里面有许多参数)。

(3)UDP 是面向报文的。发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不分拆,而是保留这些报文的边界。这就是说,应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文,如图 5-4 所示。在接收方的 UDP,对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程。也就是说,UDP 一次交付一个完整的报文。因此,应用程序必须选择合适大小的报文。若报文太长,UDP 把它交给 IP 层后,IP 层在传送时可能要进行分片处理,这会降低 IP 层的效率。反之,若报文太短,UDP 把它交给 IP 层后,会使 IP 数据报的首部的相对长度太大,这也降低了 IP 层的效率。

(4)UDP 没有拥塞控制。因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很多的实时应用(如:IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络出现拥塞时丢失一部分数据,但却不允许数据有太大的时延。UDP 协议正好适合这种要求。

(5)UDP 支持一对一、一对多、多对一和多对多的交互通信。

(6)UDP的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12150082.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存