一、出现的问题
最近在做项目的过程中,需要用java实现udp服务器,接收硬件传来的数据。
最开始代码是这样实现的:
public void run() {
try {
// 1.创建服务端DatagramSocket,并指定端口,如果不指定则使用默认端口
socket = new DatagramSocket(9527);
// 2.创建字节数组与数据报,用于接收客户端发送的数据
// 数据报,指定数组与一次接收的长度
try {
System.out.println("服务端已启动,正在等待客户端链接....");
// 用于计算接收请求次数
while (true) {
byte[] data = new byte[1032];
//帧长度为1032
packet = new DatagramPacket(data, data.length);
socket.receive(packet);
System.out.println(data);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (SocketException e) {
e.printStackTrace();
}
}
但是这种实现的方式太过于底层,还要一直while读取硬件传来的数据。很不方便,并且在这里也浪费了大量的系统资源。于是想到有没有好的java网络框架来实现一个udp服务器。这个时候Netty就闪亮登场了!