网络编程中可靠的操作全部由TCP来实现,而除TCP外,也可以利用UDP进行通讯.
TCP的缩影操作都必须建立可靠的连接才能通讯,但这种做法可定会浪费大量的系统性能,为了减少这种开销,在网络中还提供了一种传输协议–UDP(不可靠的连接).即利用数据报的形式进行数据发送,由于没有建立可靠的连接,此时接收端可能处于关闭状态,所以利用UDP发送的数据,客户端不一定接收到,
客户端:
package com;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
* @Authro: QYF
* @Time:2020/9/26 23:34
*/
public class UDPClient {
public static void main(String[] args) throws Exception {
//监听端口
DatagramSocket client = new DatagramSocket(9000);
//保存接收的数据
byte[] data = new byte[1024];
//创建数据报
DatagramPacket packet = new DatagramPacket(data, data.length);
System.out.println("等待消息中...");
//接收消息内容
client.receive(packet);
System.out.println("接收到消息:"+new String(data,0,packet.getLength()));
client.close();
}
}
服务端
package com;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* @Authro: QYF
* @Time:2020/9/26 23:39
*/
public class UDPServer {
public static void main(String[] args) throws Exception {
DatagramSocket server = new DatagramSocket(9001);
String str = "hello";
InetAddress name = InetAddress.getByName("localhost");
int prot = 9000;
DatagramPacket packet = new DatagramPacket(str.getBytes(),0,str.length(),name, prot);
server.send(packet);
System.out.println("消息发送完毕");
server.close();
}
}
如果先启动客户端再启动服务端.可以接收到服务端发送的内容.
如果先启动服务端,虽然服务单消息发送成功了.但是客户端是没有接收到的.