package com.zehong.gassdevicereport.netty; import com.zehong.gassdevicereport.netty.handler.UDPServerHandler; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioDatagramChannel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.annotation.Resource; /** * 物联网 开启检测 并写入数据库 */ @Component public class NettyUDPStart { private Logger logger = LoggerFactory.getLogger(NettyUDPStart.class); @Resource private UDPServerHandler UDPServerHandler; private EventLoopGroup bossGroup = new NioEventLoopGroup(); @Value("${UDPNetty.ports}") private int[] ports; /** * 启动netty服务 * @throws InterruptedException */ @PostConstruct public void start() throws InterruptedException { Bootstrap b=new Bootstrap (); b.group(bossGroup) .channel(NioDatagramChannel.class) .option(ChannelOption.SO_BACKLOG,128) .handler(UDPServerHandler); //开启需要监听 的端口 for(int port : ports){ ChannelFuture future = b.bind(port).sync(); if (future.isSuccess()) { logger.info("UDP server启动 "+ port +" 成功"); } } } /** * 销毁 */ @PreDestroy public void destroy() { bossGroup.shutdownGracefully().syncUninterruptibly(); logger.info("UDP server关闭 Netty 成功"); } }