精彩内容
引言
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。
在选择使用协议的时候,选择UDP必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议
以上都是百度百科解释
总结一句:UDP 是用户数据报协议的缩写,一个无连接的协议。提供了应用程序之间要发送的数据的数据包。
UDP应用场景主要有
(1)面向数据报方式;
(2)网络数据大多为短消息;
(3)拥有大量Client;
(4)对数据安全性无特殊要求;
(5)网络负担非常重,但对响应速度要求高。
UDP网络编程简单使用
udp的服务端的编写步骤
创建DatagramSocket类的套接字,并且设置服务端的端口
创建接收客户端传过来的书籍的容器
使用DatagramPacket将容器打包
接收数据
分析数据
关闭资源
udp的客户端的编写步骤
创建DatagramSocket类的套接字,并且设置客户端的端口
准备要发送的数据以byte[]格式
使用DatagramPacket将数据打包
发送数据
关闭资源
下面我们编写一个字符串传输和一个list数组传输的例子吧
udp字符串传输例子
按照上面udp的服务端和客户端的步骤编写字符串传输的例子
服务端代码
客户端代码
这就是最简单的udp传输的例子
udp对象传输例子
对象传输只需要将传输的字符串改成对象即可,这里我们使用list集合吧!
由于网络传输都是使用byte[],所以这个时候我们需要新增一个将list集合转成byte[]数组的方法。在改造当中需要使用到io当中的4个类
ByteArrayOutputStream、ByteArrayInputStream
ObjectOutputStream、ObjectInputStream
注意使用ObjectOutputStream、ObjectInputStream2个类一定要将类序列化就是要继承
Serializable 接口
客户端改造
1、创建一个Car类属性有名称和价格
2、在UDPClient类中增加一个setData方法,返回值为byte[]
Car类代码
setData方法代码
服务端改造
在UDPServer类中增加一个getData方法,返回值为List集合
以上2个小例子写完了,主要是在实际应用场景中灵活运用了
领取专属 10元无门槛券
私享最新 技术干货