Java NIO框架Netty课程(一) – Hello Netty

首先啰嗦2。假如你不知道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()));
		// 设置一个处理client消息和各种消息事件的类(Handler)
		bootstrap
				.setPipelineFactory(new ChannelPipelineFactory() {
					@Override
					public ChannelPipeline getPipeline()
							throws Exception {
						return Channels
								.pipeline(new HelloServerHandler());
					}
				});
		// 开放8000port供client訪问。
		bootstrap.bind(new InetSocketAddress(8000));
	}

	private static class HelloServerHandler extends
			SimpleChannelHandler {

		/**
		 * 当有client绑定到服务端的时候触发,打印"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 client代码
 *
 * @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());
			}
		});
		// 连接到本地的8000port的服务端
		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端开放port,供Client连接,Client发起请求,连接到Server指定的port,完毕绑定。

随后便可自由通信。

事实上就是普通Socket连接通信的过程。

Netty框架是基于事件机制的,简要地。怎么了。为了找到相关处理方法。随便找个火119,发现被抢110一个原因。

所以,这里。我们正在处理的是当client在完成事件之后与服务器连接。

当完成连接,Netty知道,他告诉我,,我负责处理。这是该框架的作用。Netty,有提供了许多活动,接触后会慢慢介绍。

你应该已经能够上手:)

时间: 2024-10-06 16:27:48

Java NIO框架Netty课程(一) – Hello Netty的相关文章

Java NIO框架Mina、Netty、Grizzly介绍与对比(zz)

Mina: Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 Mina 版本2.04支持基于 Java NIO 技术的 TCP/UDP 应用程序开发.串口通讯程序,Mina 所支持的功能也在进一步的扩展中.目前,正在使用 Mina的应用包括:Apache Directory Project.AsyncWeb.AMQP(A

Java NIO框架Mina、Netty、Grizzly介绍与对比

Mina Mina(Multipurpose Infrastructure for Network Applications) 是 Apache组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 Mina 版本2.04支持基于 JavaNIO 技术的 TCP/UDP 应用程序开发.串口通讯程序,Mina 所支持的功能也在进一步的扩展中.目前,正在使用Mina的应用包括:Apache Directory Project.AsyncWeb.AMQP(Advan

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

先啰嗦两句,假设你还不知道Netty是做什么的能做什么.那能够先简单的搜索了解一下.我仅仅能说Netty是一个NIO的框架,能够用于开发分布式的Java程序.详细能做什么,各位能够尽量发挥想象.技术,是服务于人而不是局限住人的. 假设你已经万事具备,那么我们先从一段代码開始.程序猿们习惯的上手第一步,自然是"Hello world",只是Netty官网的样例却偏偏抛弃了"Hello world".那我们就自己写一个最简单的"Hello world"

Java多线程:Linux多路复用,Java NIO与Netty简述

JVM的多路复用器实现原理 Linux 2.5以前:select/poll Linux 2.6以后: epoll Windows: IOCP Free BSD, OS X: kqueue 下面仅讲解Linux的多路复用. Linux中的IO Linux的IO将所有外部设备都看作文件来操作,与外部设备的操作都可以看做文件操作,其读写都使用内核提供的系统调用,内核会返回一个文件描述符(fd, file descriptor),例如socket读写使用socketfd.描述符是一个索引,指向内核中一个

基于nio的java网络通信框架介绍和选择

Java NIO框架Mina.Netty.Grizzly介绍与对比 Mina Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 Mina 版本2.04支持基于 Java NIO 技术的 TCP/UDP 应用程序开发.串口通讯程序,Mina 所支持的功能也在进一步的扩展中.目前,正在使用 Mina的应用包括:Apache

NIO框架的简单介绍

Java NIO框架MINA用netty性能和链接数.并发等压力测试参数好于mina. 特点:1.NIO弥补了原来的I/O的不足,它再标准java代码中提供了高速和面向块的I/O原力的I/O库与NIO最重要的区别是数据打包和传输方式的不同,原来的I/O以流的方式处理数据,而NIO以块的方式处理数据: 2.NIO以通道channel和缓冲区Buffer为基础来实现面向块的IO数据处理,MINA是开源的. JavaNIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O

全面解读Java NIO工作原理(4)

全面解读Java NIO工作原理(4) 2011-12-14 10:31 Rollen Holt Rollen Holt的博客 我要评论(0) 字号:T | T JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的.面向块的 I/O.本实用教程从高级概念到底层的编程细节,非常详细地介绍了 NIO 库.您将学到诸如缓冲区和通道这样的关键 I/O 元素的知识,并考察更新后的库中的标准 I/O 是如何工作的.您还将了解只能通过 NIO 来完成的工作,如异步 I/O 和

Java异步NIO框架Netty实现高性能高并发

1. 背景 1.1. 惊人的性能数据 近期一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用.相比于传统基于Java序列化+BIO(同步堵塞IO)的通信框架.性能提升了8倍多. 其实,我对这个数据并不感到吃惊,依据我5年多的NIO编程经验.通过选择合适的NIO框架,加上高性能的压缩二进制编解码技术,精心的设计Reactor线程模型,达到上述性能指标是全然有可能的. 以下我们就一起来看下Ne

JAVA NIO 类库的异步通信框架netty和mina

Netty 和 Mina 我究竟该选择哪个? 根据我的经验,无论选择哪个,都是个正确的选择.两者各有千秋,Netty 在内存管理方面更胜一筹,综合性能也更优.但是,API 变更的管理和兼容性做的不是太好.相比于 Netty,Mina 的前向兼容性.内聚的可维护性功能更多,例如 JMX 的集成.性能统计.状态机等. Netty 是业界最流行的 NIO 框架之一,它的健壮性.功能.性能.可定制性和可扩展性在同类框架中都是首屈一指的,它已经得到成百上千的商用项目验证,例如 Hadoop 的 RPC 框