自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 Modbus

如今,它已经成为工业领域通信协议的业界标准,并且是工业电子设备之间常用的连接方式。这串报文简单化来讲就是,主机向02设备发送报文(02) ,告诉02设备我要批量修改寄存器(10功能码),被修改的寄存器起始地址是0xA806(A806),我要修改2(0002)个寄存器,我接下来要修改的值长度为0x04(04),第一个寄存器的值要改为0x000F(000F),第二个寄存器的值要改为0x0003(0003),为了保证我发的这个报文是没有被人动过的,我告诉02设备,我这个报文的面膜是93 04(CRC校验码)。

2025-05-22 17:01:16 861

原创 WebSocket相关问题

当连接关闭时,可以根据需要执行重连机制,例如使用指数退避算法进行重连,以确保连接的稳定性和可靠性。2)服务器收到握手请求后,验证请求头的字段,并返回握手响应,响应头包含Upgrade和Connection字段,以及一个随机的Sec-WebSocket-Key字段。WebSocket支持通过wss://前缀建立加密的安全连接,使用TLS/SSL加密通信,确保数据的安全性。在使用加密连接时,服务器需要配置相应的证书。4)验证通过后,WebSocket连接建立成功,客户端和服务器可以开始进行实时通信。

2025-05-15 11:59:00 742

原创 Netty相关问题

Netty的EventLoop负责处理所有的I/O事件,并且它运行在自己的线程中,这样就不会阻塞调用者的线程。与传统的线程模型相比,EventLoop的优势在于它通过非阻塞I/O和事件驱动的方式来避免线程上下文切换的开销,同时减少了线程竞争,提高了效率。2)对于跨Channel或跨EventLoop的操作,Netty提供了线程安全的方法,如ChannelHandlerContext.writeAndFlush(),它可以确保操作被提交到正确的EventLoop线程中执行。

2025-05-12 16:25:03 804

原创 Netty

此外,AIO的API相对复杂,不如Netty提供的API友好和灵活。①异步非阻塞I/O:Netty利用Java NIO实现异步操作,这意味着在等待I/O操作完成时,线程不会被阻塞,而是可以继续处理其它任务,这极大提高了线程的利用率,使得少量线程就能处理大量并发连接,减少了线程上下文切换的开销。⑤优化的线程模型:Netty允许用户根据应用场景自定义线程模型,例如,通过配置不同的EventLoopGroup来管理不同的工作线程,可以针对不同的任务需求(如网络I/O、计算密集型任务)进行线程资源的合理分配。

2025-05-09 16:29:21 836

原创 WebSocket学习心得

HTTP协议本身是没有持久通信能力的,但是我们在实际的应用中是很需要这种能力的,所以,为了解决这些问题,WebSocket协议由此而生,于2011年被IEFT定为标准RFC6455,并被RFC7936所补充规范。最典型的场景就是聊天室。轮询的效率低,非常浪费资源。ping、pong的操作,对应的是WebSocket的两个控制帧,Opcode分别是0x9、0xA。3、WebSocket最大特点是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

2025-05-08 17:06:22 878

原创 对接云快充平台协议V1.6

在服务器代码中的port为协议中规定的端口号,CloudFastChargeClientHandler为业务处理器,即针对客户端发送的报文进行解析的代码。在run方法中规定使用NioServerSocketChannel.class,添加自定义的编解码器与业务处理器,设置为长连接模式。以上是简单流程步骤,其中的更多内容需要根据协议对应内容以及业务需求进行编写。2、对应此数据结构编写对应的编解码器与业务处理器,为解析协议报文做准备。

2025-05-07 11:01:20 1834

原创 Netty学习心得

Selector是NIO(即非阻塞IO)实现的核心,它会不断轮询注册在其上的Channel,如果某个Channel上面有新的TCP连接接入、读和写操作事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey获取就绪的Channel的集合,进行后续的操作。如在Reactor中实现读:注册读就绪事件和相应的事件处理器、事件分发器等待事件、事件到来,激活分发器,分发器调用事件对应的处理器、事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返还控制权。

2025-05-06 14:56:49 665

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除