外行人也能看懂的Netty开发教程-第一次接触

Posted JavaEdge.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外行人也能看懂的Netty开发教程-第一次接触相关的知识,希望对你有一定的参考价值。

package io.netty.example.discard;

import io.netty.buffer.ByteBuf;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

/**
 * 处理服务端的channel.
 *
 * DiscardServerHandler继承ChannelInboundHandlerAdapter(ChannelInboundHandler的实现)
 * ChannelInboundHandler提供了可重写的各种事件处理器方法
 * 现在,仅扩展ChannelInboundHandlerAdapter即可,而不是自己实现处理器接口
 */
public class DiscardServerHandler extends ChannelInboundHandlerAdapter {

    /**
     * 当有事件发生时,会调用
     * 这里重写channelRead事件处理器方法。每当从客户端接收到新数据时,就使用接收到的消息来调用此方法
     * 此示例中,接收到的消息的类型为ByteBuf
     */
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) {
        /**
         * ByteBuf是个引用计数对象,必须通过release显式释放。
         * 释放传递给处理程序的引用计数对象都是处理程序的责任!!!
         *
         * 一般channelRead处理器方法的实现如下:
         * @Override
         * public void channelRead(ChannelHandlerContext ctx, Object msg) {
         *     try {
         *         // 处理 msg
         *     } finally {
         *         ReferenceCountUtil.release(msg);
         *     }
         * }
         */
        ByteBuf byteBuf = (ByteBuf) msg;
        try {
            int count = byteBuf.readableBytes();
            byte[] content = new byte[count];
            byteBuf.readBytes(content);
            System.out.println(new String(content));
        } finally {
            byteBuf.release();
        }
    }

    /**
     * 当Netty由于I/O错误、处理器的实现类处理事件时抛异常
     * 将使用Throwable调用exceptionCaught事件处理器方法
     * 在大多数情况下,应该记录捕获的异常并在此处关闭其关联的通道,尽管此方法的实现可能会有所不同,具体取决于您要处理特殊情况时要采取的措施
     * 例如,您可能想在关闭连接之前发送带有错误代码的响应消息。
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        // 引发异常时关闭连接
        cause.printStackTrace();
        ctx.close();
    }
}

以上是关于外行人也能看懂的Netty开发教程-第一次接触的主要内容,如果未能解决你的问题,请参考以下文章

新手也能看懂的Python开发环境搭建

新手也能看懂的Python开发环境搭建

小白也能看懂的增加博客访问量的教程

大话卷积神经网络CNN,小白也能看懂的深度学习算法教程,全程干货建议收藏!

就连外行人都能看懂的SpringCloud!还说你不会?

单卡就能运行AI画画模型,小白也能看懂的教程来了,还有100万卡时免费NPU算力可用丨昇思MindSpore...