UDP监听


// 初始化类
@Component
public class UDPListener implements ServletContextListener { private static final int MAX_UDP_SIZE = 4096; private static final int UDP_PORT = 9527; DatagramSocket socket = null; DatagramPacket packet = null; @Resource private ThreadListenerService threadListenerService; @Override public void contextInitialized(ServletContextEvent sce) { threadListenerService.udpProcess(MAX_UDP_SIZE, UDP_PORT, socket, packet); } } // 线程类 @Service public class ThreadListenerService { public static final Logger logger = LoggerFactory.getLogger(ThreadListenerService.class); @Async("asyncServiceExecutor") public void udpProcess(int MAX_UDP_SIZE, int UDP_PORT, DatagramSocket socket, DatagramPacket packet) { logger.info("======= 启动线程,创建UDP实时数据监听服务 ==========="); try { socket = new DatagramSocket(UDP_PORT); logger.info("======= UDP服务创建完成 ==========="); while (true) { byte[] buffer = new byte[MAX_UDP_SIZE]; packet = new DatagramPacket(buffer, buffer.length); socket.receive(packet); process(packet); } } catch (Exception e) { e.printStackTrace(); } } @Async("asyncServiceExecutor") public void process(DatagramPacket packet) { byte[] buffer = packet.getData(); String str = null; try { str = new String(buffer, "UTF-8").trim(); logger.info("location data is received:{}", str); //TODO 数据处理 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }
udp