分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

netty 之 telnet HelloWorld 详解

发布时间:2023-09-06 02:16责任编辑:蔡小小关键词:暂无标签

依赖工具

  • Maven

  • Git

  • JDK

  • IntelliJ IDEA

源码拉取

从官方仓库 https://github.com/netty/netty Fork 出属于自己的仓库。为什么要 Fork ?既然开始阅读、调试源码,我们可能会写一些注释,有了自己的仓库,可以进行自由的提交。??

使用 IntelliJ IDEAFork 出来的仓库拉取代码。

本文使用的 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

使用说明

软件架构说明

  1. 使用netty实现客户端<-->服务器通信

项目结构

netty-helloworld
?├── client
  ?├── Client.class -- 客户端启动类
  ?├── ClientHandler.class -- 客户端逻辑处理类
  ?├── ClientHandler.class -- 客户端初始化类
?├── server
  ?├── Server.class -- 服务端启动类
  ?├── ServerHandler -- 服务端逻辑处理类
  ?├── ServerInitializer -- 服务端初始化类

使用telnet与服务端进行交互

  • 项目找到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 详解

原文地址:https://www.cnblogs.com/sanshengshui/p/9726306.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved