广告
返回顶部
首页 > 资讯 > 精选 >Netty学习教程之基础使用篇
  • 787
分享到

Netty学习教程之基础使用篇

netty基础 2023-05-31 14:05:12 787人浏览 薄情痞子
摘要

什么Netty?Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架

什么Netty?

Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

也就是说,Netty 是一个基于NIO的客户、服务器编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,tcp和UDP的Socket服务开发。

我们下面编写四个类

      1.用于接收数据的服务器端Socket

      2.用于接收客户端的消息,用于接收和反馈客户端发出的消息类ServertHandler

      3.用于发送数据的服务器端Client

      4.用于发送数据和接收服务器端发出的数据处理类ClientHandler

Socket.java

import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NiOServerSocketChannel; import io.netty.handler.codec.DelimiterBasedFrameDecoder; import io.netty.handler.codec.string.StringDecoder;  public class Server {    public static void main(String[] args) throws InterruptedException {   //1.第一个线程组是用于接收Client端连接的   EventLoopGroup bossGroup = new NioEventLoopGroup();   //2.第二个线程组是用于实际的业务处理的   EventLoopGroup workerGroup = new NioEventLoopGroup();   ServerBootstrap b = new ServerBootstrap();   b.group(bossGroup, workerGroup);//绑定两个线程池   b.channel(NioServerSocketChannel.class);//指定NIO的模式,如果是客户端就是NioSocketChannel   b.option(ChannelOption.SO_BACKLOG, 1024);//TCP的缓冲区设置   b.option(ChannelOption.SO_SNDBUF, 32*1024);//设置发送缓冲的大小   b.option(ChannelOption.SO_RCVBUF, 32*1024);//设置接收缓冲区大小   b.option(ChannelOption.SO_KEEPALIVE, true);//保持连续   b.childHandler(new ChannelInitializer<SocketChannel>() {    @Override    protected void initChannel(SocketChannel sc) throws Exception {     ByteBuf buf = Unpooled.copiedBuffer("$_".getBytes());//拆包粘包定义结束字符串(第一种解决方案)     sc.pipeline().addLast(new DelimiterBasedFrameDecoder(1024,buf));//在管道中加入结束字符串    // sc.pipeline().addLast(new FixedLengthFrameDecoder(200));第二种定长     sc.pipeline().addLast(new StringDecoder());//定义接收类型为字符串把ByteBuf转成String     sc.pipeline().addLast(new ServertHandler());//在这里配置具体数据接收方法的处理    }   });   ChannelFuture future = b.bind(8765).sync();//绑定端口   future.channel().closeFuture().sync();//等待关闭(程序阻塞在这里等待客户端请求)   bossGroup.shutdownGracefully();//关闭线程   workerGroup.shutdownGracefully();//关闭线程  } } 

--结束END--

本文标题: Netty学习教程之基础使用篇

本文链接: https://www.lsjlt.com/news/226186.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Netty学习教程之基础使用篇
    什么Netty?Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架...
    99+
    2023-05-31
    netty 基础
  • CTF之PHP基础学习篇(一)
    文章目录 前言CTF之PHP基础一、PHP是什么?二、配置PHP环境三、php基础语法 总结 前言 估摸着不少学计算机的同学以及其他专业的小部分同学都对于信息安全感兴趣吧!那对于参加...
    99+
    2023-10-02
    php 网络安全 学习
  • socket.io学习教程之基础介绍(一)
    前言 Web端与服务器间的实时数据传输的是一个很重要的需求,但最早只能通过AJAX轮询询实现。在WebSocket标准没有推出之前,AJAX轮询是唯一可行的方式(通过Flash浏览器也可以,但这里不做讨论...
    99+
    2022-06-04
    基础 教程 socket
  • socket.io学习教程之深入学习篇(三)
    前言 socket.io提供了基于事件的实时双向通讯,本文深入的介绍了socket.io,下面来看看详细的内容吧。 静态文件 socket.io默认情况下会通过socket.io-client包提供soc...
    99+
    2022-06-04
    教程 socket io
  • Python基础学习教程:Python基础之基本数据类型(一)
    Python基础学习教程:Python基础之基本数据类型(一)...
    99+
    2023-06-02
  • Netty学习教程之Netty与Marshalling结合发送对象
    前言之前的一篇文章是Netty简单的学习,我们可以传递一个字符串,那么如果我们想要在Netty中传递一个对象该怎么办呢 ?那么这个时候我们可以结合Marshalling来传递。方法如下:首先需要导入两个Marshalling的依赖包jbos...
    99+
    2023-05-31
    netty marshalling 发送对象
  • vuex学习进阶篇之getters的使用教程
    目录1.设置gettes 事件2.使用调用3.最终页面示例getters的优点:总结紧接上篇,本片主要讲讲vuex 中 getters的使用,示例中使用了vuex的modules,g...
    99+
    2022-11-13
    vuex getters使用 vuex状态管理getters
  • kotlin 官方学习教程之基础语法详解
    kotlin 官方学习教程之基础语法详解Google 在今天的举行了 I/O 大会,大会主要主要展示内有容 Android O(Android 8.0)系统、Google Assistant 语音助手、Google 智能音箱、人工智能、机器...
    99+
    2023-05-31
    kotlin 教程
  • Python常用算法学习基础教程
    本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制...
    99+
    2022-06-04
    算法 基础教程 常用
  • Java学习教程:Java基础——反射
    什么是反射?JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。例如:我们在开发的过程当中,...
    99+
    2023-06-03
  • Python学习入门基础教程(learn
     在Python里可以自定义函数,实现某特定功能,这里首先要区分一下函数的定义和函数的调用两个基本概念,初学者往往容易混淆。      函数的定义是指将一堆能实现特定功能的语句用一个函数名标识起来,而函数的调用则是通过函数名来使用这一堆语句...
    99+
    2023-01-31
    基础教程 入门 Python
  • Python学习入门基础教程(lear
      在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识。逻辑关系运算有以下几种运算符.     ...
    99+
    2023-01-31
    基础教程 入门 Python
  • shell学习之编程基础知识
    有学过编程语言的同学们都能够很快入手shell因为基础的字符类型,循环语句与C语言也差不多。以下我们来了解以下新手基础:1.在学习循环语句之前先了解一些基础的字符信息:$0、$1、$2、$、$*、$#$0 ...
    99+
    2022-10-18
  • Python基础学习之认识线程
    目录一、什么是线程?二、再来解释线程的代码三、线程触发业务函数,线程调用业务函数四、多了一个线程是哪个?五、总结一、什么是线程? 我们知道工人都是同时在工厂工作,复制各自的工作的。他...
    99+
    2022-11-13
  • python基础学习之 特征工程
      一、特征提取  字典加载特征:DictVectorizer  文本特征提取:词频向量(CountVectorizer)TF-IDF向量(TfidfVectorizer,FfidfTransformer) 特征哈希向量(HashingVe...
    99+
    2023-06-02
  • socket.io学习教程之基本应用(二)
    前言 Socket.IO支持及时、双向与基于事件的交流。它可以在每个平台、每个浏览器和每个设备上工作,可靠性和速度同样稳定。 实时分析:将数据推送到客户端,这些客户端会被表示为实时计数器,图表或日志客...
    99+
    2022-06-04
    教程 socket io
  • C#多线程学习之基础入门
    目录同步方式异步多线程方式异步多线程优化异步回调异步信号量异步多线程返回值异步多线程返回值回调线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进...
    99+
    2022-11-12
  • Python正则表达式教程之一:基础篇
    前言 之前有人提了一个需求,我一看此需求用正则表达式最合适不过。考虑到之前每次使用正则表达式,都是临时抱佛脚,于是这次我就一边完成任务一边系统的学习了一遍正则表达式。主要参考PyCon2016上的一个视频R...
    99+
    2022-06-04
    基础 教程 正则表达式
  • 零基础学习教程之Linux下搭建android开发环境
    不得已重新配置,这里记下详细步骤,分享给大家。 一、安装jdk,具体步骤如下: 1、将jdk-7u4-linux-i586.tar拷贝到linux下得/home/yan/dow...
    99+
    2022-06-06
    环境 Linux 学习 零基础 android开发 教程 Android
  • Discuz! 的防水墙使用教程(基础篇)
    Discuz! 防水墙于今年5月正式上线,截至9月底,已经为数十万社区网站提供垃圾信息处理服务,不论是广告帖、垃圾帖、水帖、违规帖等不良信息,Discuz! 防水墙均可快速、高效的进行过滤。  为了让更多站长了解、熟悉D...
    99+
    2022-06-12
    Discuz! 防水墙
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作