1.在项目启动时,要注入UdpServer,提供给其他类去调用
package com.xlwy.fkudp.server;
import cn.hutool.core.util.ReflectUtil;
import org.tio.core.udp.UdpServer;
import org.tio.core.udp.UdpServerConf;
/**
* UDP启动类
* @Auther: WHN
* @Date: 2020/10/22 15:30
* @Description:
*/
public class PacUdpServerStarter {
//新建一个UdpServer类
private static UdpServer udpServers;
//无参构造
public PacUdpServerStarter() {
}
//get方法
public UdpServer getUdpServers() {
return udpServers;
}
//set方法
public void setUdpServers(UdpServer udpServers) {
PacUdpServerStarter.udpServers = udpServers;
}
//启动方法
public static void main(String[] args) throws Exception {
start();
}
//main方法
public static void start() throws Exception {
//开启UDP服务端,端口9000,超时时间5000毫秒
PacUdpHandler fpmsUdpHandler = new PacUdpHandler();
UdpServerConf udpServerConf = new UdpServerConf(9000, fpmsUdpHandler, 5000);
UdpServer udpServer = new UdpServer(udpServerConf);
udpServer.start();
//存储全局udpServer,注入属性
//ReflectUtil.invoke:反射调用,传参:实体类、方法名、要set的参数
//ReflectUtil.newInstance:构造实例,等于new PacUdpServerStarter
//"setUdpServers":set方法的方法名
//udpServer:需要传入的参数
ReflectUtil.invoke(ReflectUtil.newInstance(PacUdpServerStarter.class), "setUdpServers", udpServer);
}
}
2.调用方法,存储全局上下文参数
public void SendMessage(){
public void sendHeartMessageStr(String hex, Node remote) {
String message = hexUtils.spliHeartMessageStr(hex);
//不用自动注入,直接使用反射调用PacUdpServerStarter类,调用get方法中的send方法
ReflectUtil.newInstance(PacUdpServerStarter.class).getUdpServers().send(message, remote);
Console.log("返回数据:"+ message + "\n");
}
}