netty框架和mina框架都是出自一人之手,两个框架基本都差不多,netty通信发送接收报文都是通过channel 通道,而mina框架通信是使用session来读写报文,首先介绍建立客户端netty连接:
private EventLoopGroup group;
private Channel channel = null;
public Channel connect(InetSocketAddress socketAddress,final Master master) throws Exception{
group = new NioEventLoopGroup();
Bootstrap b = new Bootstrap();
try {
b.group(group)
.channel(NioSocketChannel.class)
.option(ChannelOption.TCP_NODELAY, true)
.option(ChannelOption.SO_KEEPALIVE, true)
.handler(new ChannelInitializer<SocketChannel>(){
@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
ChannelPipeline pipeline = socketChannel.pipeline();
//解码器
pipeline.addLast("decoder", new IecMessageDecoder());
//编码器
pipeline.addLast("encoder", new IecMessageEncoder());
//the logic handler
pipeline.addLast("handler", new IecClientHandler(master));
}
});
final ChannelFuture channelFuture = b.connect(socketAddress).sync();
channel = channelFuture.awaitUninterruptibly().channel();
return channel;
}catch(Throwable e){
log.error("connect the "+socketAddress+"error",e);
group.shutdownGracefully();
}
return null;
}
这是一个典型的netty连接,首先先声明一个Bootstrap 这个是连接的起点,然后绑定分组(并不知道有什么卵用),接着就是绑定handler,方法为创建一个Handler初始化类接着绑定Handler,可以绑定多个Handler最后是连接,通过连接获取Channel
建立服务器端过程差不多,只是Bootstrap要申明为ServerBootstrap 最后绑定端口即可:
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.handler(new LoggingHandler(LogLevel.DEBUG))//设置父类handler
.childHandler(new ModbusServerInitializer())//
.option(ChannelOption.SO_REUSEADDR, true)
.option(ChannelOption.TCP_NODELAY, true)
.option(ChannelOption.SO_KEEPALIVE, true)
.option(ChannelOption.SO_LINGER, 0)
.option(ChannelOption.SO_BACKLOG, 1500)//设置两队列大小
.option(ChannelOption.SO_RCVBUF, 1024 * 256)
.option(ChannelOption.SO_SNDBUF, 1024 * 256)
.option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)//池化内存
.childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT);
//绑定端口
b.bind(port).sync();
log.info("init modbus server complete");
} catch(Exception e){
log.error("init modbus server exception:",e);
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
接着无论是服务器端还是客户端都是在handler中接收消息,收到的消息都会经过handler中的receiveMessage方法
分享到:
相关推荐
总的来说,使用Java Netty进行串口通信提供了一种灵活且高效的方式,尤其在需要处理大量并发连接和数据传输的环境中。通过理解Netty的事件驱动模型和管道机制,我们可以构建出强大的串口应用,例如在题目中提到的,...
Java Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于开发高效的网络服务,包括TCP、UDP等网络协议的应用。在"基于Java Netty的UDP客户端声呐数据对接"项目中,我们主要关注如何利用Netty处理UDP通信,...
本话题将探讨如何使用C++客户端与Java(通过Netty框架)服务器端实现TCP通讯,并涉及数据序列化工具Protocol Buffers(protobuf)在两者之间的交互。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节...
Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Java Netty基于对象数据传输Demo"应该是演示了如何使用Netty进行对象序列化和反序列化,以便在网络...
Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这本书“Java Netty权威指南”是深入理解并掌握Netty的关键资源,包含详细的目录,使得学习和查阅更为...
在 JavaNetty 学习进阶过程中,你需要掌握以下知识点: 1. **基本组件和概念**:熟悉 Channel、EventLoop、EventLoopGroup、ChannelHandlerContext、ChannelInboundHandler 和 ChannelOutboundHandler 等核心组件。...
Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的协议服务器和客户端。在Java领域,Netty因其高效性、灵活性和丰富的特性集而被广泛使用,尤其是在开发网络通信应用时。 标题"Java ...
本文将深入探讨如何使用Java的Netty框架实现一个基于DTU(Data Transfer Unit)的TCP服务器,该服务器具备多端口通信和多协议解析的能力。 首先,DTU是一种专门用于远程数据传输的设备,它能够通过GPRS、3G/4G等...
在Java服务端,开发者可以利用Netty构建出稳定且高效的网络服务器,处理来自客户端的连接请求。 C#客户端这边,DotNetty是.NET平台上的一个类似Netty的框架,它允许C#开发者创建基于TCP、UDP、HTTP、WebSocket等...
综上所述,"java应用netty服务端和客户端"的示例涵盖了Netty框架的基本使用,包括服务器和客户端的启动、连接、数据传输以及模型对象的一致性。理解并掌握这些知识点对于构建基于Java的高性能网络应用至关重要。在...
《基于Netty的Java数据采集软件详解》 在IT领域,高效、稳定的数据采集系统是许多业务场景中的关键环节。本文将深入探讨一个基于Netty的Java数据采集软件,它利用Netty强大的网络通信框架,实现了对大规模分布式...
Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端,是基于Java NIO的异步非阻塞的网络编程框架。Netty在内部实现了自己的线程模型,支持多种协议,包括UDP、TCP、...
JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA...
- `Server端`:Java代码,使用Netty实现WebSocket服务器,处理客户端连接和消息收发。 - `Client端`:HTML文件,包含JavaScript代码,负责建立WebSocket连接,发送和接收消息。 5. **HTML前端** HTML文件通常会...
在Java编程环境中,Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于构建可伸缩、高并发的服务器。本示例关注的是如何利用Netty实现一个基于UDP(User Datagram Protocol)的数据接收服务,这在需要进行...
Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在Java世界中,Netty由于其高效、灵活和强大的特性,已经成为网络编程的事实标准。本主题将深入探讨Netty...
Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个学习资料包“java netty学习资料”很可能是为了帮助开发者理解和掌握Netty的核心概念和实践应用。 ...
Netty的非阻塞I/O模型使得它在处理大量并发连接时表现出色,非常适合构建网络库,如Java KCP。 Forward Error Correction (FEC): FEC是一种错误纠正技术,可以在数据传输过程中检测并修复丢失或损坏的数据包,而...
在本文中,我们将深入探讨 Netty 如何与 4G DTU 设备结合,以及如何构建基于 Java 的物联网(IoT)解决方案。 4G DTU,全称 4G 数据终端单元,是一种利用 4G 移动通信技术进行数据传输的设备。它通常用于远程监控、...