Netty框架之网络通信入门程序~helloWorld

驾驭并发:Netty 高性能网络通信框架原理与实践 Netty 是一个基于 Java NIO(非阻塞 IO)的高性能、异步事件驱动的网络通信框架。 它极大地简化了 TCP/UDP/HTTP 等协议的开发,屏蔽了底层复杂的 NIO 调度细节。 阅读详情

案例演示:创建客户端和服务端,实现客户端与服务端建立连接,并且发送消息给服务端

Netty框架之网络通信入门程序~helloWorld


请尝试阅读代码,并理解注释的含义

1.服务端代码实现

public class Server {
    public static void main(String[] args) {
        //serverBootstrap,就是服务端启动器,启动服务端,并且绑定组件
        ServerBootstrap serverBootstrap = new ServerBootstrap();


                serverBootstrap
                //设置NIOEventLoopGroup包含一组NIOEventLoop,NIOEventLoop其实就是一个单线程(维护Selector,处理channel的请求)
                //这里我们设置两个NIOEventLoopGroup,一个充当Boss专门处理连接请求,一个充当Woker专门处理IO读写请求
                .group(new NioEventLoopGroup(),new NioEventLoopGroup())
                //设置通道类型服务端就是NioServerSocketChannel,客户端是NioSocketChannel
                .channel(NioServerSocketChannel.class)
                //这里设置的就是Woker(child)的处理器,也就是IO读写的具体实现
                .childHandler(new ChannelInitializer<NioSocketChannel>() {
                    //初始化处理器,处理器用于IO处理的具体实现,把多个处理器加入到pipeline中形成一条处理器连,线程会一次执行这些处理器来完成指定的IO操作
                    @Override
                    protected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {
                        ChannelPipeline pipeline = nioSocketChannel.pipeline();
                        pipeline.addLast(new StringDecoder());//解析器,收到Bytebuffer数据解析成字符串
                        pipeline.addLast(new ChannelInboundHandlerAdapter() {//自定义处理器

                            //当收到数据的时候会触发这个方法
                            @Override
                            public void channelRead(ChannelHandlerContext channelHandlerContext, Object msg) throws Exception {
                                System.out.println(msg);//输出收到的数据
                            }
                        });
                    }
                })
                .bind(8080);//绑定服务器的监听端口


    }

}

2.客户端代码实现

public class Cilent {
    public static void main(String[] args) throws Exception {
        //bootstrap客户端启动器,启动客户端,绑定各个组件
        Bootstrap bootstrap = new Bootstrap();
        //设置NioEventLoopGroup作为Woker线程组处理IO读写请求,这里因为客户端不需要处理连接请求,所以不需要NioEventLoopGroup作为Boss线程组
        Channel channel = bootstrap.group(new NioEventLoopGroup())
                //设置通道类型
                .channel(NioSocketChannel.class)
                //设置Woker线程的处理器,完成IO读写的具体实现,类似于服务端的childHandler
                .handler(new ChannelInitializer<NioSocketChannel>() {
                    @Override
                    protected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {
                        nioSocketChannel.pipeline().addLast(new StringEncoder());//编码器,把字符串编码为ByteBuffer
                    }
                })
                //向指定IP和端口的服务器发起连接请求
                .connect(new InetSocketAddress("localhost",8080))
                //同步等待,阻塞直到连接建立成功
                .sync()
                //连接建立成功之后返回一个通道,这个通道就是与服务器对应连通的,用于通信
                .channel();
        channel.writeAndFlush("helloWorld");//向服务端发送helloWorld
        
    }
}
基于Netty的RPC简单框架实现(四):Netty实现网络传输 1.Netty Netty是由JBOSS提供的一个java开源框架。在吸收了FTP,SMTP,HTTP,各种二进制,文本协议等多种协议的实现经验,并经过设计相当精心的项目后,Netty最终成功地找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty是一个基于 阅读详情

相关推荐

简易RPC框架实现——3、引入Netty实现网络通信

本章是在前面基于socket通信基础上的一种改进,引入了netty实现了客户端与服务端的网络通信,本章改动较大,对应的commit为cf7021b。 Netty是一个非阻塞I/O客户端-服务器框架,主要用于开发Java网络应用程序,如协议服务器和客户端。异步事件驱动的网络应用程序框架和工具用于简化网络编程,例如TCP和UDP套接字服务器。Netty包括了反应器编程模式的实现。(源自维基百科)。既然涉及到了网络编程,那么就离不开java中网络编程的王者——Netty。 Netty的使用方法本文不做过多赘述,如

fzzf__的博客 694

netty实时通讯demo 详细讲解

Netty 是一个高性能、异步事件驱动的网络应用程序框架,主要用于开发高性能、高可靠性的网络服务器和客户端。Netty 支持多种传输协议和编解码技术,如 TCP、UDP、HTTP、WebSocket、SSL 等,并且提供了简单易用的 API 接口,使得开发者可以轻松地构建各种网络应用程序。

weixin_54063400的博客 3799

Netty_01_分布式架构中的网络通信

8.1.1. Netty 原理 Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。它提供了对 TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞 的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。 8.1.2. Netty 高性能...

毛毛的专栏 3083

实战Netty!基于私有协议,怎样快速开发网络通信服务?

在工作中,我经常使用netty开发一些服务,掌握netty的工作原理,开发一些服务端以及客户端是非常简单,本篇文章,我们就以具体的协议来进行一个简单的服务的开发。

初念初恋的博客 1368

掌握Netty:实现客户端与服务端的高效通信

Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。作为一个基于Java NIO的框架,Netty简化了网络编程,提高了可扩展性和性能,支持TCP/UDP/HTTP等多种协议,广泛应用于即时通讯、游戏服务器、金融行业等需要高并发和低延迟通信的场景。Netty的架构设计十分灵活,它将服务器和客户端统一抽象为Channel,而ChannelPipeline则作为处理数据流的逻辑容器,通过Handler链式处理各个事件。

weixin_35649491的博客 884

手把手配置:用Synopsys VDK为英飞凌TC4x系列MCU做虚拟原型开发

本文详细介绍了如何使用Synopsys VDK为英飞凌TC4x系列MCU进行虚拟原型开发,涵盖开发环境搭建、关键外设虚拟化配置、AUTOSAR栈集成及虚拟调试与性能调优全流程。通过虚拟原型技术,开发者可提前6-12个月启动软件开发,显著提升汽车电子项目的开发效率。

weixin_30606461的博客 290

Netty入门之------基于netty实现网络通信

从前面几篇博文中我们已经学习了从BIO到NIO再到Reactor线程模型+NIO实现了客户端与服务端的一个通信,但这样写起代码来还是比较繁琐的,而Netty则极大的简化我们这种网络通信的开发,它是基于NIO之上的也同时实现了Reactor线程模型,而且使用JDK自带的NIO需要了解很多复杂的概念,一不小心就bug飞起,既然这样那我们就一起来学习下这个神秘的网络框架吧。 Nett...

蜡笔小明的博客 2008

C语言实现俄罗斯方块

使用C语言完成俄罗斯方块。《俄罗斯方块》的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它们在屏幕底部拼出完整的一条或几条。这些完整的横条会随即消失,给新落下来的板块腾出空间,与此同时,玩家得到分数奖励。没有被消除掉的方块不断堆积起来,一旦堆到屏幕顶端,玩家便告输,游戏结束。顾名思义,俄罗斯方块自然是俄罗斯人发明的。

qq_54169998的博客 7万+

亲测!超详细的使用netty进行tcp数据通信的流程,附带完整的源代码

超详细

小红的成长日记 4565

《Mac 配置 Codex App 代理完整指南:端口检测 + launchctl 设置 + 取消代理》

本文详细介绍 Mac 上 Codex App 代理配置完整流程,包括如何查看代理端口、如何使用 launchctl 设置 HTTP_PROXY / HTTPS_PROXY、如何验证代理是否生效以及如何取消代理配置。适用于 Mac Codex 代理、Mac HTTP_PROXY 设置、Mac ChatGPT 代理等开发环境场景。

weixin_50029578的博客 5329

AUTOSAR知识点 之 XCP (二):XCP基础概念

学习XCP的过程中,对XCP的基本概念要做一个全面的认知,因为里面有很多缩写以及难以理解的点,假设对此模模糊糊一知半解,那么对整个协议栈的认知会遇到极大的障碍。XCP的信号流传输图示如下XCP 标准主要分为 5 个部分:这部分提供了对于协议的一个概况介绍,包括 XCP 的功能和基础性内容。这部分内容对协议层进行了详细的规范和说明。

梦想技术家 2769

使用Netty实现高性能网络通信

1.背景介绍 在现代互联网时代,高性能网络通信已经成为开发者的基本需求。Netty是一个高性能的网络应用框架,它提供了一系列的工具和功能,帮助开发者实现高性能的网络通信。在本文中,我们将深入了解Netty的核心概念、算法原理、最佳实践以及实际应用场景。 1. 背景介绍 Netty是一个基于NIO(Non-blocking I/O)的高性能网络框架,由JBoss的核心开发者Eric O'Nei...

AI天才研究院 1120

手把手教你学Simulink--控制执行场景实例:基于Simulink的智能车辆自动紧急制动(AEB)仿真

本文完成了基于 Simulink 的智能车辆自动紧急制动(AEB),实现了:✅ 构建前车急刹与静止障碍物典型场景✅ 设计基于 TTC 的三级 AEB 决策逻辑✅ 验证在高风险场景下有效避免碰撞✅ 掌握从风险评估到制动执行的完整安全链✅ 为ADAS 主动安全功能开发奠定基础。

MHD0815的博客 234

Netty权威指南——基础篇4 网络通信基础

TCP是个“流”协议,所谓流,就是没有界限的一串数字。可以想象河里流水,是连成一片的,其间没有分界线。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的粘包和拆包。

geminigoth的博客 1652

面向干净核心的并行扩展:SAP BTP 上的 side-by-side extensions 全面解读

摘要: SAP的side-by-side extensions是一种与核心系统解耦的云原生扩展模式,通过API和事件驱动实现与SAP S/4HANA等核心系统的松耦合集成。该模式支持独立升级、弹性扩展和高效创新,是SAP官方推荐的clean core关键实现路径。其典型架构包括接口层(OData/REST API、事件通道)、运行层(Cloud Foundry/Kyma/CAP框架)和体验层(Fiori/UI5)。适用场景包括需快速迭代、复用云服务或服务外部用户的业务扩展。实施时需关注安全治理(如XSUAA

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 304

Doris磁盘空间管理(生命周期管理、清理磁盘空间方法)

在进行数据仓库开发时,比较头疼的是历史数据不删除,磁盘空间不断增长,如果磁盘空间不足时,spark调度任务写入时就会报错。

大模型大数据攻城狮的专栏 1716

分布式架构网络通信——netty

简介 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、Hessian、SOAP、ESB和JMS等,它们背后到底是基于什么原理实现的呢 1.基本原理 要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看,网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO来实现,其中传输协议比较出名的有tcp、udp等等,tcp、udp都是在基于Socket概念上为某类应用场景而扩展出的传输协议

xhuiting的博客 1034

android 14.0 去掉usb授权提示框 默认给予权限

在14.0的系统rom产品开发中,在进行iot关于插入usb设备的开发过程中,在插入usb设备时会弹出usb授权提示框,也带来一些不便, 这个需要默认授予USB权限,插拔usb都不弹出usb弹窗所以这要从usb授权相关管理页默认给与usb权限,接下来分析下 相关的实现功能流程

安卓兼职framework和app工程师的博客 2261

Netty通信

Netty是一个事件驱动型、高可用高性能的网络通信应用系统,支持定制化协议 传统的通信流程: 1、服务端创建一个serversocket,绑定一个监听端口 2、多个客户端向这个端口发送请求 3、服务端通过Accept获取一个客户端的socket连接对象,建立socket连接 4、服务端创建read线程读取socket字节流,解码得到Http请求对象,完成后,将结果封装response,编码协议将结果序列化成字节流 5、服务端创建write线程将字节流发给客户端,客户端接收响应 6、通信完成

weixin_43991053的博客 902

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

用netty实现tcp简单通信

一般我们想要使用tcp通信,最原始的方法就是使用socket套接字,但是每次都要创建新的socket对象,并且在finally中关闭,好浪费资源,很麻烦。所以就是用netty工具,可以轻松地实现tcp通信,当然也可以实现http通信,因为我们需要用tcp通信,所以这里只研究tcp。 最好先了解一下netty是干嘛的,以及NIO是什么。 netty: https://blog.youkuaiyun.com/qq_34730511/article/details/98472924?ops_request_misc=&

mistt的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Netty网络通信之Socket

网络通信之Socket

qq_33816292的博客 5009

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java网络编程之Netty实战数据通信(七)

java网络编程之Netty实战数据通信(七)

hfbin的博客 5399

Netty 实现聊天功能

http://waylau.com/netty-chat/ Netty 是一个 Java NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。Netty 大大简化了网络程序的开发过程比如 TCP 和 UDP 的 socket 服务的开发。更多关于 Netty 的知识,可以参阅《Netty 4.x 用户指南》(https://githu

... 1659

Netty实现网络通信

Netty实现网络通信 原文同步至  http://www.waylau.com/netty-chat/ Netty 是一个 Java NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。Netty 大大简化了网络程序的开发过程比如 TCP 和 UDP 的 socket 服务的开发。更多关于 Netty 的知识,可以参阅《Netty 4.x

chanzhu的博客 759

Netty框架实现TCP/IP通信

      项目中需要使用到TCP/IP协议完成数据的发送与接收。如果只是用以前写的简单的socket套接字方法,每次接收发送消息都会创建新的socket再关闭socket,造成资源浪费。于是使用netty框架完成java网络通信。       Netty框架的内容很多,这里只是代码展示其中的一个功能。       这里使用的是

普通还不自信的程序员 3885

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

在上个月的开发计划中,有一个系统控制喇叭播放的功能。当时就想到了使用netty进行通信操作。于是在调研途中,发现网上写的都是简单案例,不适用于当前的复杂通信模式。比如超时断线,断线重连,通信监听,错误记录存储,以及断线和上线后的钉钉通知等等。所以自己从头到尾重新写了一个完整项目,供大家参考。提示以下是本篇文章正文内容,下面案例可供参考。......

weixin_44030476的博客 4980
上一篇: Netty框架之多线程的Selector优化
下一篇: Netty框架之Netty组件及其作用
鲜果维他命
博客等级 码龄7年 205粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值