上一章讲述了TCP通讯方式,它是基于流的面向链接的网络通讯。UDP是IP协议上的另外一种传输协议。网络
TCP和UDP都是端到端的通讯协议,都处于TCP/IP网络模型的第三层(传输层)。socket
它和TCP的区别是:函数
TCP | UDP | 解释 |
---|---|---|
基于流 | 基于报文 | |
有链接 | 无链接 | |
有保障 | 无保障 | |
效率低 | 效率高 | |
适用稳定传输场合 | 适合容许报文丢失的场合 |
绑定地址和TCP同样spa
调用的接口和TCP不同,行为不一样。TCP的发送会发生粘包状况,而UDP不会。TCP发送认为是可靠的,而UDP的发送可能会发生丢失和乱序。接口
UDP的发送大部分时候使用sendto,由于send函数没有提供目标地址。若是UDP socket调用了connect函数,也可使用send函数。table
因为UDP没有链接,因此能够支持广播和多播。class
使用close效率
UDP也能够调用connect函数,可是connect函数只是让udp socket保存默认的发送地址,以即可以简单的调用send函数来发送数据。udp
UDP的数据是基于报文的,客户端调用一次send,产生一个UDP报文,接收一次只能接收一个报文。程序
若是recv时,程序提供的缓冲区小于UDP报文长度,那么会致使数据丢失。如何获得数据报文的长度???UDP报文不要超过MTU(1400)
广播时,发送端作额外设置,容许发送广播,接收端仍是默认处理接口。容许发送广播socket,也能够接收数据。
组播,发送端不须要额外设置,只须要发送地址改为组播地址便可。接收端加入组。