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();
|
}
|
|
}
|