首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

初学者第69节网络编程-UDP

精彩内容

引言

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个小例子写完了,主要是在实际应用场景中灵活运用了

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180506G06O8P00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券