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("发送成功");
}
}
测试信息:
客户端发送:

服务器接收:

浙公网安备 33010602011771号