Android 网络交互(四) UDP实现及UDP和TCP区别
来源:互联网 发布:java编程规范第四版 编辑:程序博客网 时间:2024/06/02 11:39
这次我们继续网络交互的未完之路。今天给大家带来的是UDP协议,在上一篇博客中我们已经知道UDP是属于传输层的协议,并简单介绍了他和应用层通信之间的关系,下面我们就来更清楚的认识UDP协议。
UDP:User Datagram Protocol,用户数据包协议,是一种不可靠的,无连接的,简单的,基于数据报的通信协议。
无连接:传送数据前,不需要建立连接。
不可靠:无法保证数据是否完全的送达,可靠性依靠上层协议支持。
在传送数据较少、较小的情况下,UDP比TCP更加高效。
我们来看下UDP数据报的结构:
源、目的端口号:占16比特。用来标识源端和目标端的应用进程,与TCP相同。
长度字段:占16比特。包括报头和数据部分在内的总字节数。报头的长度是固定的,主要是数据部分。
校验和:占16比特。用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。
下面我们来看一下,UDP实现代码:
UDP是使用DatagramSocket来实现:
客户端实现过程:
步骤1 调用DatagramSocket()创建一个数据包套接字。
步骤2 调用DatagramPacket(byte[]buf,int offset,int length,InetAddress address,int port),建立要发送的UDP包。
步骤3 调用DatagramSocket类的send()发送UDP包。
步骤4 关闭数据报套接字。
代码实现:try{
//首先创建一个DatagramSocket对象,随机端口
DatagramSocket socket = new DatagramSocket();
//创建一个InetAddree
InetAddress serverAddress = InetAddress.getByName("192.168.xxx.xxx");
String str = "hello udp"; //这是要传输的数据
byte data [] = str.getBytes(); //把传输内容分解成字节
//创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、
地址,以及端口号
DatagramPacket packet = new
DatagramPacket(data,data.length,serverAddress,8000);
//调用socket对象的send方法,发送数据
socket.send(packet);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
socket.close();
}
服务端实现过程:步骤1 调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上。
步骤2 调用DatagramPacket(byte[]buf,int length),建立一个字节数组以接收UDP包。
步骤3 调用DatagramSocket类的receive(),接受UDP包。
步骤4 关闭数据报套接字。
代码://创建一个DatagramSocket对象,并指定监听的端口号
DatagramSocket socket = new DatagramSocket(8000);
byte data [] = new byte[1024];
//创建一个空的DatagramPacket对象
DatagramPacket packet =
new DatagramPacket(data,data.length);
//使用receive方法接收客户端所发送的数据,
//如果客户端没有发送数据,该进程就停滞在这里
socket.receive(packet);
String result = new String(packet.getData(),packet.getOffset(),packet.getLength());
socket.close();
代码和注释都比较简单,写的也比较清楚了,udp的实现原理相对比较简单。当然精益求精,不同的情况需要不同的处理,让性能更高效,这才是我们开发的终求。
TCP和UDP区别:
TCP是面向连接的(三次握手建立连接),而UDP是无连接的(不保证数据的完整性和可靠性)。
TCP是可靠地(保证数据的完整性和有序性) 而UDP是不可靠的。
TCP是基于流,而UDP是基于数据报,字段不同。
TCP用于大数据传输,UDP传输简单的数据(轻量级)。
TCP速度慢,UDP速度快。
TCP更耗费系统资源,建立连接开销较大。
每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
- Android 网络交互(四) UDP实现及UDP和TCP区别
- tcp 和 udp 的区别 ,及 udp 实现可靠传输
- TCP和UDP网络通讯的区别及实现方式
- TCP和UDP网络通讯的区别及实现方式
- TCP和UDP网络通讯的区别及实现方式
- 17、TCP和UDP网络通讯的区别及实现方式
- TCP和UDP网络通讯的区别及实现方式
- TCP和UDP网络通讯的区别及实现方式
- TCP及UDP区别
- UDP是什么、及UDP和TCP的区别?
- TCP和UDP的优缺点及区别
- TCP和UDP区别
- TCP和UDP区别
- TCP和UDP区别
- TCP和UDP区别
- TCP和UDP区别
- TCP和UDP区别
- TCP和UDP区别?
- python命令行总结
- Spring集成Hibernate
- 用递归函数实现输出一个数的二进制形式
- 如何用好 Google 等搜索引擎
- ngrok 内网穿透利器
- Android 网络交互(四) UDP实现及UDP和TCP区别
- anchorPoint随记
- 第十三周项目1.2 折腾数组(2)倒序输出
- Linux的服务管理
- 第八话-工厂方法模式
- 第十二周项目四——银行系统(1)
- Oracle 的TO_DATE对日期处理
- UE正则表达式
- oracle备份