1.在项目启动时,要注入UdpServer,提供给其他类去调用

  1. package com.xlwy.fkudp.server;
  2. import cn.hutool.core.util.ReflectUtil;
  3. import org.tio.core.udp.UdpServer;
  4. import org.tio.core.udp.UdpServerConf;
  5. /**
  6. * UDP启动类
  7. * @Auther: WHN
  8. * @Date: 2020/10/22 15:30
  9. * @Description:
  10. */
  11. public class PacUdpServerStarter {
  12. //新建一个UdpServer类
  13. private static UdpServer udpServers;
  14. //无参构造
  15. public PacUdpServerStarter() {
  16. }
  17. //get方法
  18. public UdpServer getUdpServers() {
  19. return udpServers;
  20. }
  21. //set方法
  22. public void setUdpServers(UdpServer udpServers) {
  23. PacUdpServerStarter.udpServers = udpServers;
  24. }
  25. //启动方法
  26. public static void main(String[] args) throws Exception {
  27. start();
  28. }
  29. //main方法
  30. public static void start() throws Exception {
  31. //开启UDP服务端,端口9000,超时时间5000毫秒
  32. PacUdpHandler fpmsUdpHandler = new PacUdpHandler();
  33. UdpServerConf udpServerConf = new UdpServerConf(9000, fpmsUdpHandler, 5000);
  34. UdpServer udpServer = new UdpServer(udpServerConf);
  35. udpServer.start();
  36. //存储全局udpServer,注入属性
  37. //ReflectUtil.invoke:反射调用,传参:实体类、方法名、要set的参数
  38. //ReflectUtil.newInstance:构造实例,等于new PacUdpServerStarter
  39. //"setUdpServers":set方法的方法名
  40. //udpServer:需要传入的参数
  41. ReflectUtil.invoke(ReflectUtil.newInstance(PacUdpServerStarter.class), "setUdpServers", udpServer);
  42. }
  43. }

2.调用方法,存储全局上下文参数

  1. public void SendMessage(){
  2. public void sendHeartMessageStr(String hex, Node remote) {
  3. String message = hexUtils.spliHeartMessageStr(hex);
  4. //不用自动注入,直接使用反射调用PacUdpServerStarter类,调用get方法中的send方法
  5. ReflectUtil.newInstance(PacUdpServerStarter.class).getUdpServers().send(message, remote);
  6. Console.log("返回数据:"+ message + "\n");
  7. }
  8. }