`
jguangyou
  • 浏览: 375754 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java NIO框架Netty教程(一) Hello Netty(转)

 
阅读更多

先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。


如果你已经万事具备,那么我们先从一段代码开始。程序员们习惯的上手第一步,自然是"Hello world",不过Netty官网的例子却偏偏抛弃了"Hello world"。那我们就自己写一个最简单的"Hello world"的例子,作为上手

/**

 * Netty 服务端代码

 *

 * @author lihzh

 * @alia OneCoder

 * @blog http://www.coderli.com

 */

public class HelloServer {

 

    public static void main(String args[]) {

        // Server服务启动器

        ServerBootstrap bootstrap = new ServerBootstrap(

                new NioServerSocketChannelFactory(

                        Executors.newCachedThreadPool(),

                        Executors.newCachedThreadPool()));

        // 设置一个处理客户端消息和各种消息事件的类(Handler)

        bootstrap.setPipelineFactory(new ChannelPipelineFactory() {

            @Override

            public ChannelPipeline getPipeline() throws Exception {

                return Channels.pipeline(new HelloServerHandler());

            }

        });

        // 开放8000端口供客户端访问。

        bootstrap.bind(new InetSocketAddress(8000));

    }

 

    private static class HelloServerHandler extends SimpleChannelHandler {

 

        /**

         * 当有客户端绑定到服务端的时候触发,打印"Hello world, I'm server."

         *

         * @alia OneCoder

         * @author lihzh

         */

        @Override

        public void channelConnected(ChannelHandlerContext ctx,

                ChannelStateEvent e) {

            System.out.println("Hello world, I'm server.");

        }

    }

}

/**

 * Netty 客户端代码

 *

 * @author lihzh

 * @alia OneCoder

 * @blog http://www.coderli.com

 */

public class HelloClient {

 

    public static void main(String args[]) {

        // Client服务启动器

        ClientBootstrap bootstrap = new ClientBootstrap(

                new NioClientSocketChannelFactory(

                        Executors.newCachedThreadPool(),

                        Executors.newCachedThreadPool()));

        // 设置一个处理服务端消息和各种消息事件的类(Handler)

        bootstrap.setPipelineFactory(new ChannelPipelineFactory() {

            @Override

            public ChannelPipeline getPipeline() throws Exception {

                return Channels.pipeline(new HelloClientHandler());

            }

        });

        // 连接到本地的8000端口的服务端

        bootstrap.connect(new InetSocketAddress(

                "127.0.0.1", 8000));

    }

 

    private static class HelloClientHandler extends SimpleChannelHandler {

 

        /**

         * 当绑定到服务端的时候触发,打印"Hello world, I'm client."

         *

         * @alia OneCoder

         * @author lihzh

         */

        @Override

        public void channelConnected(ChannelHandlerContext ctx,

                ChannelStateEvent e) {

            System.out.println("Hello world, I'm client.");

        }

    }

}

 

 

 

 

既然是分布式的,自然要分多个服务。Netty中,需要区分Server和Client服务。所有的Client都是绑定在Server上的,他们之间是不能通过Netty直接通信的。(自己采用的其他手段,不包括在内。)。白话一下这个通信过程,Server端开放端口,供Client连接,Client发起请求,连接到Server指定的端口,完成绑定。随后便可自由通信。其实就是普通Socket连接通信的过程。

Netty框架是基于事件机制的,简单说,就是发生什么事,就找相关处理方法。就跟着火了找119,cj了找110一个道理。所以,这里,我们处理的是当客户端和服务端完成连接以后的这个事件。什么时候完成的连接,Netty知道,他告诉我了,我就负责处理。这就是框架的作用。Netty,提供的事件还有很多,以后会慢慢的接触和介绍。

你应该已经可以上手了:)

分享到:
评论
3 楼 darren_nizna 2016-09-07  
Netty 实战(精髓)    http://gitlore.com/darren/netty_in_action/index.html
2 楼 大家来学习 2015-11-24  
国内首部NIO+Netty5各种RPC架构实战演练
课程观看地址:http://www.xuetuwuyou.com/course/52


[b]一、课程使用到的软件及版本:
    jdk1.7+netty5+spring4+maven3+protobuf+thrift-0.9.3

二、课程设计到的技术点:
    nio,netty,protobuf,thrift,maven

[/b]
三、学完课程之后,您可以:
①熟练掌握netty基础技术知识
②让您从一个优秀的程序员,走上架构师道路
③快速构建互联网的netty高并发rpc架构
④走上程序员高薪之路

四、课程目录:
第1课、nio简单介绍
第2课、Nio基本组件ByteBuffer
第3课、ServerSocket
第4课、selector与serversocketchannel的使用
第5课、SocketChannelSelector
第6课、aio编程
第7课、netty服务器的快速实现
第8课、netty客户端架构实现
第9课、netty客户端模拟高并发以及netty5线程模型
第10课、netty的编码解码
第11课、protobuf简单讲解
第12课、protobuf与netty整合
第13课、netty与protobuf架构1
第14课、netty与protobuf架构2
第15课、netty http通信与spring整合架构1
第16课、netty http通信与spring整合架构2
第17课、netty websocket聊天室1
第18课、netty websocket聊天室2
第19课、Thrift讲解
第20课、thrift与netty整合
第21课、thrift与netty整合2
第22课、thrift rpc架构1
第23课、thrift rpc架构2
第24课、netty的http与socket
第25课、各种架构整合2以及nety源码分析
第26课、课程总结
1 楼 ramon1989 2015-03-31  
问一下,你的SimpleChannelHandler是哪个包下边的?

相关推荐

    Java NIO框架Netty教程.pdf

    ### Java NIO框架Netty教程知识点解析 #### 一、Netty框架简介 Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器与客户端。它提供了对多种协议的支持,如HTTP、WebSocket、...

    Java_NIO框架Netty教程.pdf

    Netty是一个高性能的NIO(New I/O,即非阻塞IO)框架,用于简化网络编程,尤其是在需要高吞吐量和低延迟通信的分布式应用中。Netty被广泛应用于大型网站的后台系统中,例如在线游戏和互联网金融等领域,以及一些需要...

    Java视频教程 Java游戏服务器端开发 Netty NIO AIO Mina视频教程

    jaca视频教程 jaca游戏服务器端开发 Netty NIO AIO Mina视频教程 课程目录: 一、Netty快速入门教程 01、第一课NIO 02、第二课netty服务端 03、第三课netty客户端 04、第四课netty线程模型源码分析(一) 05、...

    Java网络编程 NIO Netty

    在学习和使用Netty时,可以通过`HelloNetty_src.zip`中的源码示例来理解其工作原理。这个例子通常会展示如何创建一个简单的服务器和客户端,通过Netty发送和接收消息。从中你可以了解到如何配置ChannelHandler(处理...

    Netty网络编程视频教程

    一. NIO 基础 1. 三大组件 2. ByteBuffer 3. 文件编程 4. 网络编程 5. NIO vs BIO 二. Netty 入门 1. 概述 2. Hello World 3. 组件 4. 双向通信 三. Netty 进阶 1. 粘包与半包 2. 协议设计与解析 3. 聊天室案例 四. ...

    Netty之helloworld示列

    Netty是Java领域的一款高性能、异步事件驱动的网络应用框架,主要用于快速开发可维护的高性能协议服务器和客户端。在本示例中,“Netty之helloworld”旨在为初学者提供一个简单的入门教程,帮助理解Netty的工作原理...

    netty-http-server:它是一个基于 NIO 框架 Netty 的 HTTP 服务器,提供处理 HTTP 请求并将有关它们的信息存储在数据库中

    它是一个基于 NIO 框架 Netty 的 HTTP 服务器,提供处理 HTTP 请求并将有关它们的信息存储在数据库中。 在默认服务器有下一个处理程序: - 提供有用的服务器初始化和一些配置。 - 处理 HTTP 请求并基于该构造响应...

    netty之hello world

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨Netty的基本概念,通过“Hello World”范例来理解其工作原理。 首先,让我们理解...

    netty学习教程

    #### 四、HelloNetty示例分析 ##### 1. 服务端代码详解 - **初始化服务端**: - 创建`ServerBootstrap`实例,并使用`NioServerSocketChannelFactory`来指定服务端通道类型。 - 设置管道工厂`setPipelineFactory`...

    Java Netty-入门教程.pdf

    ### Java Netty 入门教程知识点详解 #### 1. Netty 概览 ##### 1.1 Netty 是什么? Netty 是一款基于 Java 的高性能网络应用框架,支持多种协议,包括但不限于 HTTP、FTP、SMTP 等,并且特别擅长处理 TCP 和 UDP ...

    基于netty的websocket开发小结

    Netty是一个高性能、异步事件驱动的网络应用程序框架,广泛用于构建高性能的服务器和客户端应用,包括WebSocket服务。这篇基于Netty的WebSocket开发小结将探讨如何使用Netty实现WebSocket服务端和客户端的交互。 ...

    Netty大纲-同步netty专栏

    Netty 是一个高性能、异步的 Java 网络应用框架,它提供了一种用于构建高度可定制的网络服务器和客户端的高级API。Netty 底层基于 NIO(非阻塞I/O)库,允许开发者创建高效的并发服务器,同时处理大量并发连接。本文...

    基于NIO-EPOOL模型netty实现的具备一致性哈希算法的NAT端口映射器

    Netty是一个基于NIO的框架,它封装了底层复杂的NIO操作,提供了一套易于使用的API,使得开发者能够更专注于业务逻辑,而不是网络编程的细节。Netty支持多种传输协议,如TCP、UDP等,适合构建各种网络应用,如服务器...

    基于netty4 的udp字节数据接收服务

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨如何利用 Netty 4 构建基于 UDP(用户数据报协议)的数据接收服务,以及如何实现...

    netty4完整配置及实例

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨 Netty 4 的完整配置以及如何通过实例来理解和应用它。 1. **Netty 4 版本差异**:...

    netty代码demo.rar

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个“netty代码demo.rar”文件很可能是包含了一些Netty的基础使用示例,帮助开发者理解和学习Netty的工作...

    netty案例.zip

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"netty案例.zip"压缩包提供了一个简单的Netty入门示例,帮助初学者理解如何使用Netty进行网络编程。下面...

    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输示例代码.rar

    在"HelloNetty"示例中,我们可以看到一个简单的服务端和客户端的创建过程,以及如何通过Netty进行数据交互。这个例子通常会包含创建EventLoopGroup、定义处理器、配置并启动ServerBootstrap或Bootstrap,以及在...

    netty+protobuf入门案例.

    Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。它提供了丰富的网络编程模型,简化了网络I/O操作,使得开发者可以更专注于业务逻辑的实现,而不是底层的连接管理和...

    Netty5.0架构剖析和源码解读

    Netty是一个高性能的网络应用程序框架,其核心优势在于异步事件驱动的I/O处理机制。接下来我们将深入分析Netty服务端的创建过程。 ###### 3.1.1. 服务端启动辅助类ServerBootstrap `ServerBootstrap`是Netty中创建...

Global site tag (gtag.js) - Google Analytics