//package org.springblade.modules.nettyServer; // //import io.netty.bootstrap.ServerBootstrap; //import io.netty.channel.*; //import io.netty.channel.nio.NioEventLoopGroup; //import io.netty.channel.socket.ServerSocketChannel; //import io.netty.channel.socket.SocketChannel; //import io.netty.channel.socket.nio.NioServerSocketChannel; // // //public class Server { // private int port; // private ServerSocketChannel serverSocketChannel; // // public Server(int port){ // this.port = port; // bind(); // } // // private void bind() { // Thread thread = new Thread(new Runnable() { // @Override // public void run() { // //服务端要建立两个group,一个负责接收客户端的连接,一个负责处理数据传输 // //连接处理group // EventLoopGroup boss = new NioEventLoopGroup(); // //事件处理group // EventLoopGroup worker = new NioEventLoopGroup(); // ServerBootstrap bootstrap = new ServerBootstrap(); // // 绑定处理group // bootstrap.group(boss, worker).channel(NioServerSocketChannel.class) // //保持连接数 // .option(ChannelOption.SO_BACKLOG, 1024) // //有数据立即发送 // .option(ChannelOption.TCP_NODELAY, true) // //保持连接 // .childOption(ChannelOption.SO_KEEPALIVE, true) // //处理新连接 // .childHandler(new ChannelInitializer() { // @Override // protected void initChannel(SocketChannel sc) throws Exception { // // 增加任务处理 // ChannelPipeline p = sc.pipeline(); // p.addLast( //// //使用了netty自带的编码器和解码器 //// new StringDecoder(), //// new StringEncoder(), // //心跳检测,读超时,写超时,读写超时 // //new IdleStateHandler(5, 0, 0, TimeUnit.SECONDS), // //自定义的处理器 // new ServerHandler()); // } // }); // // //绑定端口,同步等待成功 // ChannelFuture future; // try { // future = bootstrap.bind(port).sync(); // if (future.isSuccess()) { // serverSocketChannel = (ServerSocketChannel) future.channel(); // System.out.println("服务端启动成功,端口:"+port); // } else { // System.out.println("服务端启动失败!"); // } // // //等待服务监听端口关闭,就是由于这里会将线程阻塞,导致无法发送信息,所以我这里开了线程 // future.channel().closeFuture().sync(); // } catch (Exception e) { // e.printStackTrace(); // } // finally { // //优雅地退出,释放线程池资源 // boss.shutdownGracefully(); // worker.shutdownGracefully(); // } // } // }); // thread.start(); // } // // public void sendMessage(Object msg){ // if(serverSocketChannel != null){ // serverSocketChannel.writeAndFlush(msg); // } // } //}