package com.braun.pumpd.netty;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
public class NettyServer {
public static final int PORT = 5000;
private Channel serverChannel;
public void start() throws Exception {
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG, 100)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
}
});
ChannelFuture f = b.bind(PORT).sync();
// 保存 serverChannel, 之后调用 close, closeFuture sync 的阻塞就会解除了
serverChannel = f.channel();
System.out.println("server started at port " + PORT);
// 这里 sync 会一直阻塞
f.channel().closeFuture().sync();
} finally {
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
System.out.println("server closed");
}
public void stop() {
if (serverChannel != null) {
serverChannel.close();
serverChannel = null;
}
}
}
Netty server 主动关闭
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本篇讲述server如何处理客户端断开的连接,以及如何关闭服务。首先我们看客户端断开连接后,server端会做什么...
- 本系列Netty源码解析文章基于 4.1.56.Final版本 我们接着上篇文章 我为 Netty 贡献源码 | ...
- 本系列Netty源码解析文章基于 4.1.56.Final版本 写在前面..... 本文是笔者肉眼盯 Bug 系列...
- 在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是...
- 错误现象 项目中报错: Seata Server控制台报错: 根本原因 这是由于Seata 0.7.1之前的Bug...