`
dwj147258
  • 浏览: 194636 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java netty连接

阅读更多
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方法
4
8
分享到:
评论
1 楼 shuaiji 2016-04-19  
都没有提到继承 handler 实现业务部分。也没指出这个是什么协议

相关推荐

    JAVA netty 获取串口数据并且下发数据

    总的来说,使用Java Netty进行串口通信提供了一种灵活且高效的方式,尤其在需要处理大量并发连接和数据传输的环境中。通过理解Netty的事件驱动模型和管道机制,我们可以构建出强大的串口应用,例如在题目中提到的,...

    基于java netty的udp客户端声呐数据对接

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于开发高效的网络服务,包括TCP、UDP等网络协议的应用。在"基于Java Netty的UDP客户端声呐数据对接"项目中,我们主要关注如何利用Netty处理UDP通信,...

    c++客户端和java(Netty)服务器端tcp通讯

    本话题将探讨如何使用C++客户端与Java(通过Netty框架)服务器端实现TCP通讯,并涉及数据序列化工具Protocol Buffers(protobuf)在两者之间的交互。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节...

    Java Netty基于对象数据传输Demo

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Java Netty基于对象数据传输Demo"应该是演示了如何使用Netty进行对象序列化和反序列化,以便在网络...

    java netty权威指南完整版带目录

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这本书“Java Netty权威指南”是深入理解并掌握Netty的关键资源,包含详细的目录,使得学习和查阅更为...

    netty-4.1_javaNetty_netty_服务器_

    在 JavaNetty 学习进阶过程中,你需要掌握以下知识点: 1. **基本组件和概念**:熟悉 Channel、EventLoop、EventLoopGroup、ChannelHandlerContext、ChannelInboundHandler 和 ChannelOutboundHandler 等核心组件。...

    JavaNetty客户端与服务器

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的协议服务器和客户端。在Java领域,Netty因其高效性、灵活性和丰富的特性集而被广泛使用,尤其是在开发网络通信应用时。 标题"Java ...

    Java采用Netty实现基于DTU的TCP服务器 + 多端口 + 多协议

    本文将深入探讨如何使用Java的Netty框架实现一个基于DTU(Data Transfer Unit)的TCP服务器,该服务器具备多端口通信和多协议解析的能力。 首先,DTU是一种专门用于远程数据传输的设备,它能够通过GPRS、3G/4G等...

    Netty实现Java服务端和C#客户端联通

    在Java服务端,开发者可以利用Netty构建出稳定且高效的网络服务器,处理来自客户端的连接请求。 C#客户端这边,DotNetty是.NET平台上的一个类似Netty的框架,它允许C#开发者创建基于TCP、UDP、HTTP、WebSocket等...

    java应用netty服务端和客户端

    综上所述,"java应用netty服务端和客户端"的示例涵盖了Netty框架的基本使用,包括服务器和客户端的启动、连接、数据传输以及模型对象的一致性。理解并掌握这些知识点对于构建基于Java的高性能网络应用至关重要。在...

    基于Netty的Java数据采集软件

    《基于Netty的Java数据采集软件详解》 在IT领域,高效、稳定的数据采集系统是许多业务场景中的关键环节。本文将深入探讨一个基于Netty的Java数据采集软件,它利用Netty强大的网络通信框架,实现了对大规模分布式...

    Java Netty 分布式开发 框架

    Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端,是基于Java NIO的异步非阻塞的网络编程框架。Netty在内部实现了自己的线程模型,支持多种协议,包括UDP、TCP、...

    JAVA版基于netty的物联网高并发智能网关.zip

    JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA...

    WebSocket利用netty连接入门项目

    - `Server端`:Java代码,使用Netty实现WebSocket服务器,处理客户端连接和消息收发。 - `Client端`:HTML文件,包含JavaScript代码,负责建立WebSocket连接,发送和接收消息。 5. **HTML前端** HTML文件通常会...

    java实现基于netty 的udp字节数据接收服务

    在Java编程环境中,Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于构建可伸缩、高并发的服务器。本示例关注的是如何利用Netty实现一个基于UDP(User Datagram Protocol)的数据接收服务,这在需要进行...

    java netty通信

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在Java世界中,Netty由于其高效、灵活和强大的特性,已经成为网络编程的事实标准。本主题将深入探讨Netty...

    java netty学习资料

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个学习资料包“java netty学习资料”很可能是为了帮助开发者理解和掌握Netty的核心概念和实践应用。 ...

    基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务

    Netty的非阻塞I/O模型使得它在处理大量并发连接时表现出色,非常适合构建网络库,如Java KCP。 Forward Error Correction (FEC): FEC是一种错误纠正技术,可以在数据传输过程中检测并修复丢失或损坏的数据包,而...

    netty+4G DTU

    在本文中,我们将深入探讨 Netty 如何与 4G DTU 设备结合,以及如何构建基于 Java 的物联网(IoT)解决方案。 4G DTU,全称 4G 数据终端单元,是一种利用 4G 移动通信技术进行数据传输的设备。它通常用于远程监控、...

Global site tag (gtag.js) - Google Analytics