1.netty版本大致版本分为  netty3.x  和  netty4.x、netty5.x

2.netty可以运用在那些领域?

1)分布式进程通信
例如: hadoop、dubbo、akka等具有分布式功能的框架,底层RPC通信都是基于netty实现的,这些框架使用的版本通常都还在用netty3.x

2)游戏服务器开发
最新的游戏服务器有部分公司可能已经开始采用netty4.x 或 netty5.x

3、netty服务端hello world案例

SimpleChannelHandler 处理消息接收和写
{
    messageReceived接收消息

channelConnected新连接,通常用来检测IP是否是黑名单

channelDisconnected链接关闭,可以再用户断线的时候清楚用户的缓存数据等
}

4、netty客户端hello world案例

channelDisconnected与channelClosed的区别?

1)channelDisconnected只有在连接建立后断开才会调用
2)channelClosed无论连接是否成功都会调用关闭资源

目录结构:

5.HelloHandler

package com.cxb.server;import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.ExceptionEvent;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelHandler;
/*** 消息接受处理类*/
public class HelloHandler extends SimpleChannelHandler {/*** 接收消息*/@Overridepublic void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {String s = (String) e.getMessage();System.out.println(s);//回写数据ctx.getChannel().write("hi");super.messageReceived(ctx, e);}/*** 捕获异常*/@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {System.out.println("exceptionCaught");super.exceptionCaught(ctx, e);}/*** 新连接*/@Overridepublic void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {System.out.println("channelConnected");super.channelConnected(ctx, e);}/*** 必须是链接已经建立,关闭通道的时候才会触发*/@Overridepublic void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {System.out.println("channelDisconnected");super.channelDisconnected(ctx, e);}/*** channel关闭的时候触发*/@Overridepublic void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {System.out.println("channelClosed");super.channelClosed(ctx, e);}
}

6.Server

package com.cxb.server;import java.net.InetSocketAddress;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
import org.jboss.netty.handler.codec.string.StringDecoder;
import org.jboss.netty.handler.codec.string.StringEncoder;
/*** netty服务端入门*/
public class Server {public static void main(String[] args) {//服务类ServerBootstrap bootstrap = new ServerBootstrap();//boss线程监听端口,worker线程负责数据读写ExecutorService boss = Executors.newCachedThreadPool();ExecutorService worker = Executors.newCachedThreadPool();//设置niosocket工厂bootstrap.setFactory(new NioServerSocketChannelFactory(boss, worker));//设置管道的工厂bootstrap.setPipelineFactory(new ChannelPipelineFactory() {@Overridepublic ChannelPipeline getPipeline() throws Exception {ChannelPipeline pipeline = Channels.pipeline();// 上行时string的解码pipeline.addLast("decoder", new StringDecoder());// 下行时string的编码pipeline.addLast("encoder", new StringEncoder());pipeline.addLast("helloHandler", new HelloHandler());return pipeline;}});bootstrap.bind(new InetSocketAddress(8003));System.out.println("server start!");}}

7.测试,启动服务端,使用telnet连接服务

发送消息,服务端返回hi

附录:项目所需的jar

代码下载​​​​​​​

Netty学习02--Netty3服务端相关推荐

  1. 《netty入门与实战》笔记-02:服务端启动流程

    为什么80%的码农都做不了架构师?>>>    1.服务端启动流程 这一小节,我们来学习一下如何使用 Netty 来启动一个服务端应用程序,以下是服务端启动的一个非常精简的 Demo ...

  2. 使用netty实现简单tcp服务端

    文章目录 前言 服务端 启动方式 前言 最近在做的项目有一个需要对接TCP的功能,网上查了一下,决定用netty来实现. 服务端 这次的需求只需要做一个服务端,话不多说,直接上代码 pom <d ...

  3. 使用Netty实现客户端和服务端之间的双向通信

    欢迎阅读本篇文章 提示:本文只是提供部分核心代码,源码详见代码示例 使用Netty实现客户端和服务端之间的双向通信 前言 一.服务端 二.客户端 前言 在上个月的开发计划中,有一个系统控制喇叭播放的功 ...

  4. netty单片机通讯_服务端netty,如何给指定客户端(非netty)发送指令?

    Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞.基于事件驱动.高性能.高可靠性和高可定制性.而TCP/IP是通用的标准通信协议,所有基于此协议的两端(服务端和 ...

  5. Netty实例-简单的服务端-client实现,凝视具体

           书籍推荐:                                       实例代码 : http://download.csdn.net/detail/jiangtao_s ...

  6. 使用springboot+netty处理tcp/ip服务端编程

    1.添加依赖 略 2.netty服务器启动 springboot的bean代码,另开一个线程启动 @Component public class NettyServer {private static ...

  7. 02回声服务端与客户端(瑕疵版)

    产生问题的原因是TCP不存在数据边界(粘包问题) client.c #include <stdio.h> #include <stdlib.h> #include <st ...

  8. SQL学习笔记:服务端配置-如何使用企业管理器

    在这之前不熟悉SQL2000基础知识,搞得下载完别人的VC源码,而SQL却配置不好导致无法测试程序.另外,网上也有很多方法,不过似乎都不太完整,很多地方并没有告诉你该怎么怎么做.... 下面我创建了一 ...

  9. 《Netty权威指南 第2版》学习笔记(1)---服务端与客户端开发入门

    前言 Netty权威指南中以时间服务器为入门案例,演示了如何通过Netty完成了服务端与客户端之间的交互过程. 在开始使用Netty开发之前,先回顾一下使用NIO进行服务端开发的步骤. 创建Serve ...

  10. linux netty udp服务端,Netty实现UDP服务端

    ### 前言 在之前的文章我已经讲过了利用`Netty`实现`UDP`客户端,大家有兴趣的话,可以参看下面文章: [Netty实现UDP客户端](https://www.jianshu.com/p/5 ...

最新文章

  1. ajax jsonp请求报错not a function的解决方案
  2. C 中 main 函数的参数
  3. 管理员端API——任仲行
  4. Shell - 文件运算符
  5. QT+FFMPEG实现视频播放
  6. C语言入门经典材料领走不谢!
  7. 一张“神图”看懂单机/集群/热备/磁盘阵列(RAID)
  8. 20190825:(leetcode习题)最长公共前缀
  9. python3.8使用aiml总结
  10. linux 桌面小部件,在Ubuntu中安装桌面小部件 | MOS86
  11. 微信支付成功后发送短信通知
  12. java短链接生成方法
  13. docker安装wechat微信、wxwork企业微信脚本整理
  14. Codeforces 685B Kay and Snowflake(树形dp)
  15. java script是什么_Java Script的工作原理是什么?怎样用它来生成简单的
  16. LTC咨询LTC培训经验分享:华为系智谋帮许浩明老师辅导上市公司欧菲光科技进行基于LTC流程的能力提升
  17. 送你一套免费英语资料(价值1899)
  18. Windows系统下结束卡死的应用程序
  19. 堆漏洞挖掘——fastbin attack漏洞
  20. 矩阵的特性和运算法则

热门文章

  1. CAD圆与椭圆的初阶练习、CAD扇叶绘制
  2. VSCO Film 下载及安装教程
  3. 聚酞菁钴(CoPPc)磺化酞菁钴 聚酞菁钴CAS: 1154579-82-4
  4. 全端通用快速开发UI组件库UnifyUi大更新,Unify Ui是基于uni-app的全端(vue/nvue)组件库
  5. 大数据时代与工业4.0
  6. 怎样把三维模型生成html文件,如何快速创建3D模型 并导出USDZ文件 在自己设备上浏览...
  7. java毕业设计班费收支管理系统(附源码、数据库)
  8. zxing 修改聚焦时间,取景框大小设置
  9. 华为汽车局丨华为“造”车,兵分两路
  10. 第一篇SCI之前要做的事儿