美文网首页
4.Netty心跳

4.Netty心跳

作者: 未知的证明 | 来源:发表于2019-02-21 20:00 被阅读0次

结果如下图

当有客户端连上时,Server控制台截图

1.主程序

import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
public class MyServer {
    public static void main(String[] args) throws Exception {
        EventLoopGroup bossGroup = new NioEventLoopGroup();
        EventLoopGroup workerGroup = new NioEventLoopGroup();
        try {
            ServerBootstrap serverBootstrap = new ServerBootstrap();
            serverBootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
                    .handler(new LoggingHandler(LogLevel.INFO))
                    .childHandler(new MyServerInitializer());
            ChannelFuture channelFuture = serverBootstrap.bind(8899).sync();
            channelFuture.channel().closeFuture().sync();
        } finally {
            bossGroup.shutdownGracefully();
            workerGroup.shutdownGracefully();
        }
    }
}

2.Initializer程序

import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.timeout.IdleStateHandler;
import java.util.concurrent.TimeUnit;
public class MyServerInitializer extends ChannelInitializer<SocketChannel> {
    @Override
    protected void initChannel(SocketChannel ch) throws Exception {
        ChannelPipeline pipeline = ch.pipeline();
        pipeline.addLast(new IdleStateHandler(5,7,3, TimeUnit.SECONDS));
        pipeline.addLast(new MyServerHandler());
    }
}

3.Handler程序

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.handler.timeout.IdleStateEvent;
public class MyServerHandler extends ChannelInboundHandlerAdapter {
    @Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        if (evt instanceof IdleStateEvent){
            IdleStateEvent event = (IdleStateEvent) evt;
            String eventType = null;
            switch (event.state()){
                case READER_IDLE:
                    eventType = "读空闲";
                    break;
                case WRITER_IDLE:
                    eventType = "写空闲";
                    break;
                case ALL_IDLE:
                    eventType = "读写空闲";
                    break;
            }
            System.out.println(ctx.channel().remoteAddress() + "超时事件" + eventType);
            ctx.channel().close();
        }
    }
}

相关文章

  • 4.Netty心跳

    结果如下图 1.主程序 2.Initializer程序 3.Handler程序

  • 心跳

    文/安澜 我撑着伞 走过一条人潮汹涌的街道 一朵春寒料峭的花 轻轻落在我的肩头 于是 ...

  • 心跳

    上班都是玩的心跳 从早上赶公交 挤公交 到中午吃饭叫餐 38 39 40 42 43 44 和同事一起叫的号...

  • 心跳

    夜里静静听着—— 我的心跳, 扑通、扑通、扑通, 有节奏、力度,又很弱小。 扑通、扑通、扑通, 像大大地喘着气, ...

  • 心跳

    感受几声心跳 头脑中的噗通 揣摩细胞频率 手随机械牵引 缓慢向前挪动 终究无力停留 唯有一段音韵 唤醒时间知觉 偶...

  • 心跳

    停电的下午 雨声淅淅沥沥 窗口的光打在书上 忽明忽暗 文字在跳跃 我开始摇晃 听 这是心跳的声音 听,心跳在拨弄身...

  • 心跳

    冰凉的夜里 想伸手打开冰凉的手机 因为手机里有一颗滚烫的心 思念不停,它律动不止 砰,砰,砰 有很多次,想找你 说...

  • 心跳

    多少次 当我安静下来时 天空也随之停止了摆动 我注视着的方向 是我回不去的岁月 和无忧的童年 远处的鹧鸪声 一声、...

  • 心跳

    阴雨天 趴在床上 听雨声与心跳声相合 活着 感受世间沧桑 是对生命的负责 还是对自己的放弃。

  • 心跳

    你陪我玩的心跳 刺激又震颤 开始的完美 转而就换了结局 对不起 再见

网友评论

      本文标题:4.Netty心跳

      本文链接:https://www.haomeiwen.com/subject/olgdyqtx.html