| | |
| | | run(); |
| | | } |
| | | |
| | | /** |
| | | * 不用 |
| | | */ |
| | | public void init() { |
| | | final NioEventLoopGroup group = new NioEventLoopGroup(); |
| | | try { |
| | | Bootstrap b = new Bootstrap(); |
| | | b.group(group).channel(NioDatagramChannel.class) |
| | | .option(ChannelOption.SO_BROADCAST, true) |
| | | .handler(new ChannelInitializer<NioDatagramChannel>() { |
| | | @Override |
| | | public void initChannel(NioDatagramChannel ch) throws Exception { |
| | | ChannelPipeline p = ch.pipeline(); |
| | | p.addLast("decoder", new JsonObjectDecoder()); |
| | | p.addLast(new UdpServerHandler()); |
| | | } |
| | | }); |
| | | InetAddress address = InetAddress.getLocalHost(); |
| | | channel = b.bind(address, port).sync().channel(); |
| | | Executors.newSingleThreadExecutor().execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | channel.closeFuture().sync(); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | group.shutdownGracefully(); |
| | | } |
| | | } |
| | | }); |
| | | LOG.info("UDP服务器启动, host:{},port:{}", address.getHostAddress(), port); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | //给管道抽象出接口,给Channel更多的能力和配置,例如Channel的状态,参数,IO操作 |
| | | //使用ChannelPipeline实现自定义IO |