fei.wang
2025-04-16 c386374de5ff4a65904124ef839e6862518d27fa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package com.hxzkmonitor.udp;
 
 
import com.hxzkmonitor.pojo.TbSystem;
import com.hxzkmonitor.service.TbSystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import javax.annotation.PostConstruct;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.*;
import java.nio.charset.StandardCharsets;
import java.util.List;
 
 
/** 该类用于UDP转发数据到指定端口地址 */
@Component
public class Udp_Out {
 
    @Autowired
    private TbSystemService systemService;
    public static Udp_Out udpout;
 
    @PostConstruct  //关键四:通过@PostConstruct注解实现注入
    public void init() {
        udpout = this;
    }
    /**
     * 实现UDP转发
     *
     * @param data
     *            需要转发的数据
     * @param lenth需要转发的数据长度
     * @param type需要转发的数量类型
     * @throws IOException
     */
 
    /**将数据发送cs端*/
    public static void udp_to_cs(String message) {
        DatagramPacket packet=null;
        DatagramSocket socket =null;
        InetAddress address=null;
        List<TbSystem> system = udpout.systemService.findsystem();
        int port = Integer.parseInt(system.get(0).getUdpport());
        String ip = "127.0.0.1";
        byte[] data = null;
        try {
            data = message.getBytes(StandardCharsets.UTF_8);
        } catch (Exception e1) {
            // TODO 自动生成的 catch 块
            e1.printStackTrace();
        }
        int length=data.length;
 
        try {
            address=InetAddress.getByName(ip);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        //如果数据类型相同
        try {
            socket = new DatagramSocket();
        } catch (SocketException e) {
            e.printStackTrace();
        }
        packet=new DatagramPacket(data, length, address, port);
 
 
        try {
            socket.send(packet);
        } catch (IOException e) {
            e.printStackTrace();
        }
        socket.close();
    }
 
}