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