Netty
文章平均质量分 58
在工作中Netty遇到的一些问题以及学习心得
一个生活在底层的小小码农
学而时习之,不亦说乎
展开
-
Netty实时接收数据放入缓存处理简单示例
在开启服务后配置handler,在handler中尽量能不做操作就不要做出任何操作,只负责解析报文和处理数据,收到得数据放入缓存中,再由拿到得缓存另外处理,存入数据库也好,页面展示也好,都通过缓存进行操作。因为硬件设备使用的udp协议,传输数据,客户端只顾着发数据,所以大部分操作都在我服务端进行操作,做到数据实时(定义为每秒客户端发送来一次数据)展示。map首先判断是否已存在该数据,并判断客户端传来的数据与map中的数据是否有变化,对比里昂个map是否有变化的方法使用。原创 2022-12-16 15:29:09 · 936 阅读 · 0 评论 -
使用springBoot初始化启动netty创建的两个服务,解决只能启动一个,另一个不能执行问题
springboot中netty启动后无法启动其他方法原创 2022-09-23 18:15:50 · 2949 阅读 · 9 评论 -
netty的ByteBuf转字节输入流InputStream
用到了netty的UDP协议,获取到客户端传来的封包,通过content()方法获取到客户端发来的消息内容,获取到的是ByteBuf类型的,就用到了BytBuf转字节流,代码如下: @Override protected void channelRead0(ChannelHandlerContext channelHandlerContext, DatagramPacket datagramPacket) throws Exception { //content()方法获取发送者原创 2021-12-15 15:39:07 · 1767 阅读 · 0 评论 -
Netty通信的一个小Demo(客户端和服务端收发消息)
我其他文章有简单的介绍netty流程,这边就不叙述了,直接贴代码了:(1)NettyServer——服务端: public static void main(String[] args) throws InterruptedException { NettyServerDemo.start(); } public static void start() throws InterruptedException { //其中一个是处理网络连接,另一个是线程组原创 2021-09-03 18:02:04 · 653 阅读 · 1 评论 -
netty的channel的分类
传统的IO中,都是基于字节流/字符流进行操作的,而在NIO中则是基于通道(channel)和缓冲(buffer)进行操作的,其中的channel虽然模拟了流的概念,实则大不相同。通道必须结合Buffer,不能直接像通道中读或写数据,结构如下:所有的通道都有这两种操作:检查通道的开启状态和关闭通道。从Channel接口引申出的其他接口都是面向字节的子接口,也就是说通道本质上都是对自己缓冲区进行操作的。这里只介绍SocketChannel (通过TCP读写网络数据)、DatagramChannel.原创 2021-05-19 09:59:41 · 208 阅读 · 0 评论 -
Netty通信步骤的简单总结(客户端)
服务端依次执行的步骤建立套接字SocketChannel,以及对应的管道pipeline;启动客户端线程,将SocketChannel注册到客户端线程持有的selector中,并将注册返回的selectionKey赋值给SocketChannel关联的selectionKey变量;触发channelRegistered事件;channelRegistered事件由ChannelInitializer的channelRegistered方法响应:将客户端自定义的处理器(譬如EchoClientHan原创 2021-05-18 16:14:41 · 298 阅读 · 0 评论 -
Netty通信步骤的简单总结(服务端)
平时也只是知道怎么让netty进行通讯,赶项目就没有整理过,今天简单的整理一下执行步骤服务端依次执行的步骤首先建立服务端监听套接字serverSocketChannel(TCP的),以及对应的管道pipeline;启动boss,work线程组,将serverSocketChannel注册到boss线程持有的selector中,并将注册返回的selectionKey赋值给ServerSocketChannel关联的selectionKey变量;在serverSocketChannel对应的管道中.原创 2021-05-18 14:38:43 · 361 阅读 · 0 评论 -
Netty使用时有channelRead和channelRead0,它们什么区别?
公司项目中有看到同事在使用netty通讯时重写channelRead0这个方法进行接收数据,然后我在网上看教程有使用channelRead方法的,两个都是可以进行接收数据的,那区别是什么呢?我们直接看一下源码首先看channelRead:@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { boolean release = true; .转载 2021-05-17 18:11:05 · 6466 阅读 · 4 评论 -
简单阐述一下Netty中Channel的生命周期(SimpleChannelInboundHandler)
文章目录1.channelRegistered(注册事件)2.channelUnregistered(取消注册事件)3.channelActive(是否是活跃)4.channelInactive(不活跃)5.channelReadComplete(读取完毕事件)6.userEventTriggered(用户事件触发)7.channelWritabilityChanged(可写更改)8.exceptionCaught(捕获到异常)9.handlerAdded(拦截器的添加)10.handlerRemoved(转载 2021-05-17 17:54:47 · 1525 阅读 · 0 评论 -
netty实现简单通讯的Demo
记录一下netty问题channel通道中的socketChannel和channel区别:socketChannel是指定协议为TCP协议,而channel是总称原创 2021-05-17 17:10:52 · 356 阅读 · 0 评论