//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<SocketChannel>() {
|
// @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);
|
// }
|
// }
|
//}
|