SpringBoot的Upd服务端,客户端案列
1.在我们对接设备的数据时,有用到upd传输数据。
服务端:
public static void main(String[] args) throws IOException {
SpringApplication.run(DongqingWisdomcloudDeviceApplication.class, args);
/*new NIOServer(null, 10002);*/
//定义一个端口号
int port = 10002;
try {
//创建接收方的套接字,监听端口号
DatagramSocket getSocket = new DatagramSocket(port);
while(true){
//确定接收的数据报文的长度,来建立缓冲区
byte[] buf = new byte[1024];
//创建接收类型的数据包,数据先储存在缓冲区
DatagramPacket getPacket = new DatagramPacket(buf,buf.length);
//通过套接字接收数据
getSocket.receive(getPacket);
//解析接收到到16机制数据
byte[] bytes = getPacket.getData();
System.out.println("原始数据++++"+(new String(bytes, "UTF-8")).trim());
/* String data = UpdUitls.getBufHexStr(bytes);
System.out.println("upd接收++++++++"+data);*/
UpdUitls.backHeadle(getSocket,getPacket);
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
客户端:
//日供冷报表
/* @Scheduled(cron = "0 14 0 ? * *")*/
@Scheduled(fixedRate = 10000)
private void dayProjectCoolStorageReport() throws Exception {
udpSimpleClient.sendMessage("FEDC0125AB4EA32532000000050300300000000F00");
log.info("upd发送成功++++++++++++++++++++++++++++++++");
}
@Slf4j @Service public class UdpSimpleClient { private Integer udpPort = 10002; public void sendMessage(String message) throws IOException { log.info("发送UDP: {}", message); InetSocketAddress inetSocketAddress = new InetSocketAddress("xxxxxx", udpPort); byte[] udpMessage = message.getBytes(); DatagramPacket datagramPacket = null; try (DatagramSocket datagramSocket = new DatagramSocket()) { datagramPacket = new DatagramPacket(udpMessage, udpMessage.length, inetSocketAddress); datagramSocket.send(datagramPacket); } catch (SocketException e) { log.error(e.getMessage(), e); } log.info("发送成功"); } }
测试信息:
客户端发送:
服务器接收: