netty 之 telnet HelloWorld 详解
Posted sanshengshui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了netty 之 telnet HelloWorld 详解相关的知识,希望对你有一定的参考价值。
-
Maven
-
Git
-
JDK
-
IntelliJ IDEA
源码拉取
从官方仓库 https://github.com/netty/netty Fork
出属于自己的仓库。为什么要 Fork
?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。??
使用 IntelliJ IDEA
从 Fork
出来的仓库拉取代码。
本文使用的 Netty 版本为 4.1.26.Final-SNAPSHOT
。
Maven Profile
打开 IDEA 的 Maven Projects ,选择对应的 Profiles 。如下图所示:
-
jdk8
:笔者使用的 JDK 版本是 8 ,所以勾选了jdk8
。如果错误的选择,可能会报如下错误:java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer
-
linux
: 选择对应的系统版本。?? 笔者手头没有 windows 的电脑,所以不知道该怎么选。
修改完成后,点击左上角的【刷新】按钮,进行依赖下载,耐心等待...
解决依赖报错
在 codec-redis
模块中,类 FixedRedisMessagePool 会报如下类不存在的问题:
import io.netty.util.collection.LongObjectHashMap; import io.netty.util.collection.LongObjectMap;
-
具体如下图所示:
解决方式如下:
cd common;
mvn clean compile;
-
跳转到
common
模块中,编译生成对应的类。为什么可以通过编译生成对应的类呢,原因参见common
模块的src/java/templates/io/netty/util/collection
目录下的.template
文件。
在 Github 上,也有多个针对这个情况讨论的 issue :
-
《Can not find class io.netty.util.collection.LongObjectHashMap in 4.1.8.final》
-
《io.netty.util.collection.LongObjectHashMap not found at branch 4.1》
example 模块
在 example
模块里,官网提供了多个 Netty 的使用示例。 本文以 telnet
包下来作为示例。哈哈哈,因为最简单且完整。
netty-helloworld
使用说明
软件架构说明
-
使用netty实现客户端<-->服务器通信
项目结构
netty-helloworld
├── client
├── Client.class -- 客户端启动类
├── ClientHandler.class -- 客户端逻辑处理类
├── ClientHandler.class -- 客户端初始化类
├── server
├── Server.class -- 服务端启动类
├── ServerHandler -- 服务端逻辑处理类
├── ServerInitializer -- 服务端初始化类
-
项目找到com.sanshengshui.netty.server.Server类,右键debug as启动SocketServer
-
打开telnet,和服务端进行交互操作
-
项目找到com.sanshengshui.netty.server.Server类,右键debug as启动Server
-
项目找到com.sanshengshui.netty.client.Client类,右键debug as启动Client
演示如下:
结果也如上述所说!
其它
关于netty 之 telnet HelloWorld 详解到这里就结束了。
netty 之 telnet HelloWorld 详解项目工程地址: https://github.com/sanshengshui/netty-learning-example/tree/master/netty-helloworld
对了,也有不使用springBoot整合的Netty项目工程地址:
https://github.com/sanshengshui/netty-learning-example
原创不易,如果感觉不错,希望给个推荐!您的支持是我写作的最大动力!
版权声明:
作者:穆书伟
博客园出处:https://www.cnblogs.com/sanshengshui
github出处:https://github.com/sanshengshui
个人博客出处:https://sanshengshui.github.io/
以上是关于netty 之 telnet HelloWorld 详解的主要内容,如果未能解决你的问题,请参考以下文章