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("发送成功");
    }
}

测试信息:

客户端发送:

服务器接收:

 

 

posted @ 2022-08-11 18:49  码海兴辰  阅读(235)  评论(0)    收藏  举报