`

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

阅读更多

Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。

那我们就自己写一个最简单的"Hello world"的例子,作为上手。用的是netty-3.5.7.Final.jar包(jar包在附件中可以下载)。

     服务器代码:

import java.net.InetSocketAddress;
import java.util.concurrent.Executors;

import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.SimpleChannelHandler;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;

/**
 * 服务端代码 
 * 
 * @author Administrator
 * 
 */
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(8089));
	}

	private static class HelloServerHandler extends SimpleChannelHandler {

		/**
		 * 当有客户端绑定到服务端的时候触发,打印"Hello world, I'm server." 
		 */
		@Override
		public void channelConnected(ChannelHandlerContext ctx,
				ChannelStateEvent e) {
			System.out.println("Hello world, I'm server.");
		}
	}
}

 客户端代码:

import java.net.InetSocketAddress;
import java.util.concurrent.Executors;

import org.jboss.netty.bootstrap.ClientBootstrap;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.SimpleChannelHandler;
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;

/**
 * Netty 客户端代码
 * @author Administrator
 *
 */
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", 8089));
	}

	private static class HelloClientHandler extends SimpleChannelHandler {


		/**
		 * 当绑定到服务端的时候触发,打印"Hello world, I'm client."
		 */
		@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,提供的事件还有很多,以后会慢慢的接触和介绍。

你应该已经可以上手了:

分享到:
评论

相关推荐

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

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

    Netty之helloworld示列

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

    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案例.zip

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

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

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

    netty代码demo.rar

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

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

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

    Netty demos. (Netty 案例大全).zip

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Netty demos. (Netty 案例大全).zip"文件很可能包含了Netty 4.x版本的用户指南示例代码,帮助开发者更...

Global site tag (gtag.js) - Google Analytics