Java 网络编程5---UDP程序设计
UDP简介
TCP
的所有操作都必须建立可靠的连接,这样肯定会消耗大量的系统资源,为了减少这种开销,在网络中又提供了另一种传输协议—UDP
协议,DUP
连接时一种不可靠的连接,UDP
协议广泛的使用与各种聊天工具中。
使用DUP
发送的消息,接收方不一定会接收到,所有的信息使用数据包的形式发送出去,所以这就要求客户端要始终等待服务器发送的消息才能进行接收,在Java
中使用DatagramSocket
类和DatagramPacket
类完成UDP
程序的开发。
UDP程序实现
在UDP开发中使用DatagramPacket类包装一条要发送的信息,之后使用DatagramSocket类用于完成信息的发送操作,这两个类的常用方法如下表所示。
序号 | DatagramPacket类常用方法 | 描述 |
---|---|---|
1 | DatagramPacket(byte[] buf, int length) |
构造 DatagramPacket(数据报包)对象,指定数据报包的长度为length |
2 | DatagramPacket(byte[] buf, int length, InetAddress address, int port) |
构造数据报包对象,指定数据的长度,目标地址,目标端口 |
3 | byte[] getData() |
返回接收的数据 |
4 | int getLength() |
返回将要发送或接收到的数据的长度。 |
序号 | DatagramSocket类的常用方法 | 描述 |
---|---|---|
1 | DatagramSocket(int port) |
创建数据报套接字并将其绑定到本地主机上的指定端口。 |
2 | void send(DatagramPacket p) |
从此套接字发送数据报包。 |
3 | void receive(DatagramPacket p) |
从此套接字接收数据报包。 |
实现UDP程序,首先应该从客户端编写,在客户端指定要接收数据的端口和取得数据。
实例:UDP客户端—UDPClient
1 | package my.net.udp; |
程序运行结果:
程序运行之后,客户端已经打开了监听端口,等待服务器端向客户端发送信息。现在来编写服务端向客户端接收信息。
实例:DUP发送的服务端程序—UDPServer
1 | package my.net.udp; |
运行结果:
在服务器端运行完成后,客户端可以接收到来自服务端的消息,此时的客户端的运行结果: