# NettyServerDemo **Repository Path**: codefire/NettyServerDemo ## Basic Information - **Project Name**: NettyServerDemo - **Description**: 一个基于netty的服务器demo - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2015-01-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #NettyServerDemo 这是一个基于netty4.0.25final的demo,展示了netty的基本用法。项目分为client和server2个maven工程,工程结构非常简单,拎包入住,开箱即用。 只有一个package, server工程结构: org.fire.net DefaultChannelInitializer:netty的channel初始化类,提供初始化server端channel的功能,包括设置编解码器和io处理器 DefaultIOHandler:IO处理器,处理服务端io事件 DefaultProtocolDecoder:协议解码器,将netty收到的ByteBuf转换成自定义的消息 DefaultProtocolEncoder:协议编码器,将自定义的消息转换成ByteBuf Packet:数据包类 Server:服务器启动类 SocketServer:服务器类,提供初始化监听器以及启动监听的功能 TestLogic:提供一些测试逻辑 TestPb:测试用的基于ProtoBuf的消息 Util:目前只有一个CRC32功能,该CRC32算法来自"http://introcs.cs.princeton.edu/java/51data/CRC32.java.html" TestPb.proto:测试用proto文件 client工程结构: org.fire.net client工程结构与server一致,不同之处在于client启动的服务不同于server。 netty是个事件驱动的网络开发框架,一般用户业务逻辑在DefaultIOHandler.channelRead方法里面处理,但是注意不要直接在这里面处理 阻塞性任务,一般来说响应连接建立、收到消息、触发异常这3个事件即可满足要求,分别对应DefaultIOHandler.channelActive、 DefaultIOHandler.channelRead、DefaultIOHandler.exceptionCaught这3个方法。 编解码是网络应用的需要提供一个基础功能,用于消息和可直接传输对象的转换。这个例子提供的编解码功能对应的消息类是Packet。