Netty 客户端与服务端双向通信

Netty原理分析及实战(四)-客户端与服务端双向通信 本文是Netty原理分析及实战(四)-客户端与服务端双向通信,若要关注前文,请点击传送门: Netty原理分析及实战(三)-高可用服务端搭建 前文Netty服务端搭建。通过Netty搭建的客户端和服务端都能够支持高并发量的连接需求,本文我们来实现一下Netty的客户端。 一、准备工作 需要准备好前文搭建的Netty服务端,环境和服务端相同就可以了。 二、创建Netty客户端(Netty ... 阅读详情

2016年,拍摄于台湾省垦丁,这就是太平洋了,风太大了我这个吨位几乎站不住。

 微信公众号

王皓的GitHub:https://github.com/TenaciousDWang

     

现在我们已经学会了如何启动一个Netty的客户端与服务端,接下来,我们来让他俩双向通讯。

客户端发送数据

      首先,我们看一下引导类.handler这个位置,之前我们说过这个地方是用来添加IO处理逻辑的,现在我们可以在initChannel这个方法中为我们的SocketChannel添加Logic,ch.pipeline()方法会返回一个ChannelPipeline对象,是一个逻辑处理链,采用责任链模式,然后我们使用addLast()方法,为服务端添加处理逻辑new ClientHandler()。

      

接下来,来实现这个handler,首先我们继承ChannelInboundHandlerAdapter,覆写channelActive()方法,这个方法会在连接建立时调用:

      从ChannelHandlerContext中获取一个ByteBuf(Netty数据传输的载体,与以往的socket编程不同,Netty的数据载体是以ByteBuf为单位的,以后会详细说一下),将要发送的数据写入到载体中,最后将ByteBuf放入管道发出。

服务端读取客户端送来的数据

       跟客户端差不多,我们同样给NettyServer.java服务端中逻辑处理链添加逻辑处理器:

       接下来,我们来实现读取客户端数据的Handler:

       同样是继承ChannelInboundHandlerAdapter类,然后我们覆写channelRead()方法,这个方法在读取到数据时,会回调,msg就是读取到的数据,这里我们可以强制转换为ByteBuf,将二进制数据转为UTF-8字符串,打印到控制台。

服务端相应客户端并返回数据

       同客户端向服务端发送数据,从ChannelHandlerContext中获取一个ByteBuf,填充数据后,经由ctx.channel().writeAndFlush(out);写入数据。

      然后,我们让客户端来读取服务端返回的响应,打印到控制台上,跟服务端读取数据一样,我们来覆写channelRead()方法。

        现在可以启动服务端与客户端,来查看你的控制台了~

 

 

Netty使用SSL实现双向通信加密 最近项目有个需求,TCP服务器实现基于证书通信加密,之前没做过,花了一些时间调研,今天整理下。 阅读详情

相关推荐

目标检测中回归损失函数(L1Loss,L2Loss,Smooth L1Loss,IOU,GIOU,DIOU,CIOU,EIOU,αIOU ,SIOU)

为了解决CIoU的问题,有学者在CIOU的基础上将纵横比拆开,提出了EIOU Loss,并且加入Focal聚焦优质的预测框,与CIoU相似的,EIoU是损失函数的解决方案,只用于训练。在错误率小的地方,梯度的值也应当小,反之在错误率大的地方,梯度也应当大,因为这时候我们需要对错误率小的情况进行微调,而错误率大的地方进行大刀阔斧的调整;如下图所示,三种情况IoU都相等,但看得出来他们的重合度是不一样的,左边的图回归的效果最好,右边的最差。DIoU的作者考虑到,在两个框中心点重合时,c与d的值都不变。

zyw2002的博客 6629

SpringBoot实现Socket客户端,Netty服务端实现Java通讯(附源码及注释详解)

SpringBoot实现Socket通讯: 使用Netty实现一个Socket通讯,包括客户端和服务端,通过服务端进行监听,客户端发送信息,服务端可进行接收,并进行返回数据,完成一个完整的通讯 客户端用的Socket编程,而服务端用到Netty框架实现。源码地址: 源码地址!!!!!!!! 而且启动初始化及调用的日志、注释写的很清楚,如下: package com.xu.server; impo...

beishanyingluo的博客 1万+

STM32F103C8T6 驱动2位共阳数码管(基于 74HC595 和 PNP 三极管)

整体设计思路是通过 STM32F103C8T6 控制 74HC595 和 PNP 三极管,实现共阳数码管的显示功能。最初的电路设计中,三极管发射极接 5V 电源,这导致了数码管两位显示相同数字的问题。数码管能够稳定显示 0-99的数字。

qq_40289410的博客 2210

netty实现服务端和客户端交互

提示:学习netty要有nio的基础友情链接。

zjg 2310

软件自动化测试脚本如何编写,编写自动化测试脚本的几点注意事项

我们需要自动化测试脚本的原因:1、验收测试是一项非常复杂和费力的被用来确保软件质量的环节。它的目的就是使软件能得到充分运行并且能使其符合原始需求。2、测试的目的无非就是满足了两个结果:测试通过或测试不通过。为了能实现每个测试结果,必须要明确每个测试用例。并且对于整个系统而言在合同中必须定义测试用例的失败标准,而且这个失败标准数必须是可接受的。3、测试用例的通过条件必须有一个清晰的标准,标准可以被定...

weixin_39575775的博客 2251

保姆级教程:在Win10/Win11上搞定AppScan 10.0.0安装与许可证激活(含常见报错解决)

本文提供AppScan 10.0.0在Win10/Win11上的详细安装与许可证激活指南,涵盖环境准备、分步安装、文件替换技巧及常见报错解决方案。通过专业的安全测试工具部署实践,帮助用户高效完成安装并避免常见陷阱,提升Web应用安全扫描效率。

weixin_30800987的博客 425

JAVA-Netty实现服务端和客户端通讯

package com.ruoyi.im.util.netty3; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel;.

qq_37201836的博客 2327

sentinel——SLC数据下载、DEM数据下载拼接、精密轨道数据下载方法

Sentinel——SLC数据下载、DEM数据下载、精密轨道数据下载方法 SLC数据下载 网址:https://search.asf.alaska.edu DEM数据下载 1 手动下载 http://srtm.csi.cgiar.org/srtmdata/ 3.在SARscape中使用下载好的DEM 将下载好的DEM放在软件默认下载DEM路径下(默认路径是C:\Users<用户名&g...

u011322358的博客 2万+

Java 基于Netty客户端 03【实现客户端、服务器读写通信】

【代码】Java 基于Netty客户端 03【实现客户端、服务器读写通信】

WaaTong的博客 612

【Tessy】集成测试小白入门指导

本文详细介绍了如何进行集成测试的小白入门指导,从新建工程到设计用例,实现集成测试的过程详细步骤

qq_37282365的博客 1184

WRFDA如何读取风云四号A 星的GIIRS数据?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1025

初识Netty——服务端、客户端创建

需要注意的是,SocketChannel 执行 connect()操作后有以下三种结果:(1)连接成功,返回True(2)暂时没有连接上,服务端没有返回ACK 应答,连接结果不确定,返回False;当轮询到就绪的channel之后,就由reactor线程NioEventloop执行channelpipeline的相应方法,最终执行channelhandler。设置并绑定reactor线程池。上的Channel,Selector 的轮询操作由绑定的 EventLoop 线程 run 方法驱动,在一。

m0_60649266的博客 1653

【系统架构设计师】二十三、通信系统架构设计理论与实践①

通信网络主要形式:局域网、广域网、移动通信网。 局域网网络架构有 4 种类型:单核心架构、双核心架构、环型架构、层次型架构。 广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成。通常,在大型网络构建中,通过广域网将分布在各地域的局域网互连起来,形成一个大的网络。 移动通信网为移动互联网提供了强有力的支持,尤其是5G 网络为个人用户、垂直行业等 提供了多样化的服务。

帅次的博客 3762

Netty初学三 客户端与服务端双向通信

首先获取一个Netty对二进制数的抽象ByteBuf,ctx.alloc()获取一个ByteBuf的内存管理器,然后将二进制数据填充到ByteBuf,最后调用ctx.channel().writeAndFlush()把数据写到服务端。从以上代码中可以看出,Netty里的数据是以ByteBuf为单位的,所需要写的数据必须放在一个ByteBuf中,读数据也如此。ch.pipeline()返回的是和这条连接相关的逻辑处理链,采用的是责任链模式。服务端覆盖的方法是channelRead()方法。

2201_75920541的博客 588

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

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Netty(3)-实现客户端与服务端的双向通信

文章目录一.基本思路二.通信流程三.代码实现 一.基本思路 读写逻辑处理均是启动阶段通过给逻辑处理链Pipeline添加逻辑处理器实现连接数据的读写逻辑。 客户端连接成功回调逻辑处理器的channelActive()方法 客户端和服务端接收到对方的数据回调用各自逻辑处理器的channelRead()方法。 客户端和服务端向对方写数据调用writeAndFlush()方法 客户端和服...

BoringError的博客 1935

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

netty之微信-客户端与服务端双向通信(七)

实战:客户端与服务端双向通信 在前面两个小节,我们已经学习了服务端启动与客户端启动的流程,熟悉了这两个过程之后,就可以建立服务端与客户端之间的通信了,本小节,我们用一个非常简单的 Demo 来了解一下服务端和客户端是如何来通信的。 .handler(new ChannelInitializer&lt;SocketChannel&gt;() { @Override public...

huangpeigui的专栏 1191

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Netty入门-客户端与服务端双向通信

服务端启动并指定连接数据读写逻辑 import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.chann..

小毛贼_哪里逃 316

Netty | 03 - 客户端与服务端双向通信

客户端和服务器双向通信

GangsterChen & Codes 577

【闪电侠学netty】第6章 客户端与服务端双向通信

客户端与服务端双向通信

ladymorgana的博客 1286

Netty即是服务端又是客户端,服务端和客户端相互对应

Netty即是服务端又是客户端,服务端和客户端相互对应。 具体功能细节是: 上游有一个服务,会主动发送消息给我中间件平台。中间件平台既有服务端也有客户端。通过下游客户端连接进来的客户端和中间件传下去的通道id是一样的,实现互相对应的一种通道,保证知道传输的消息是走的同一条路。那么就要自己具备同时是一个服务端和一个客户端,下游客户端连接服务端。也就是达到一种透传的功能,中间件平台只充当消息转换的...

Moli_张的博客 4982

基于Netty的服务端、客户端的通信Demo

基于Netty的服务端、客户端Demo。

anpeihang的博客 770

Netty入门篇-从双向通信开始

百度百科描述 Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说,Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty 相当于简化和流线化了网络应用的编程开发过程,例如:基于 TCP 和 UDP 的 socket 服务开发。 如上摘录自百度百科的描

niceyoo的博客 1235

服务端基于Netty4的UDP双向通信Demo演示

【前言】 NIO框架的流行,使得开发大并发、高性能的互联网服务端成为可能。这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2、而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文)。 本文将演示的是一个基于Netty4的UDP服务端和一个标准UDP客户端(Java实现)双向通信的完整例子。实际上,Netty4的UDP例

okkeqin的专栏 1万+

Netty的Socket编程详解-搭建服务端与客户端并进行数据传输

场景 Netty在IDEA中搭建HelloWorld服务端并对Netty执行流程与重要组件进行介绍: https://blog.youkuaiyun.com/BADAO_LIUMANG_QIZHI/article/details/108592418 上面对于搭建Netty的HelloWorld已经实现,下面介绍怎样使用Netty进行Socket编程,并搭建服务端与客户端进行通信传输数据。 注: 博客:https://blog.youkuaiyun.com/badao_liumang_qizhi 关注公众号 霸道的程序猿

BADAO_LIUMANG_QIZHI的博客 2443

NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34320724的博客 354

Netty实战 IM即时通讯系统(六)实战: 客户端和服务端双向通信

##Netty实战 IM即时通讯系统(六)实战: 客户端和服务端双向通信 零、 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 实战: 客户端和服务端双向通信 数据传输载体ByteBuf介绍 客户端与服务端通信协议编解码 实现客户端登录 实现客户端与服务端收发消息 pipeline与channelHandler 构建客户端与服务端pipeline 拆包粘包理论与解...

chou_out_man的博客 2092
上一篇: 创建一个 Netty Service
下一篇: Netty 二进制通信协议设计
JavaBoy王皓
博客等级 码龄11年 23粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值