首先啰嗦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。有提供了许多活动,接触后会慢慢介绍。

你应该已经能够上手:)

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

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

    Mina:Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用 ...

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

    Mina:Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用 ...

  3. Java NIO框架Netty demo

    Netty是什么 Netty是一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty 是一个基于NI ...

  4. (转)Java NIO框架Mina、Netty、Grizzly介绍与对比

    转:http://blog.csdn.net/cankykong1/article/details/19937027 Mina: Mina(Multipurpose Infrastructure fo ...

  5. 几种Java NIO框架的比较(zz)

    问题:生活中工作中,会有人问我javaNIO框架里面 Netty Mina  xSocket Grizzly 等等哪个比较好? 在这里写一下自己的感受,也算是总结一下吧 在我的印象中.不管是什么NIO ...

  6. Getty – Java NIO 框架设计与实现

    前言 Getty是我为了学习 Java NIO 所写的一个 NIO 框架,实现过程中参考了 Netty 的设计,同时使用 Groovy 来实现.虽然只是玩具,但是麻雀虽小,五脏俱全,在实现过程中,不仅 ...

  7. (转)Java NIO框架

    java nio系列文章,转自:http://ifeve.com/overview/ java nio selector深度解析1:http://blog.csdn.net/haoel/article ...

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

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

  9. Java NIO框架 Mina、Netty、Grizzly

    Mina Mina(Multipurpose Infrastructure for Network Applications) 是 Apache组织一个较新的项目,它为开发高性能和高可用性的网络应用程 ...

随机推荐

  1. hdu1428之spfa+dfs

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. UltraEdit破解方法最强收录

    作为一个能够满足你一切编辑需求的强大文本编辑器.ultraedit在IT届有着非常高的人气.只是它正版的价钱也是不廉价滴,没记错的话是要好几十刀. 那么对于我们来说,破解UltraEdit就是一项必备 ...

  3. Android清理设备内存具体完整演示样例(一)

    MainActivity例如以下: package come.on; import android.app.Activity; import android.content.Context; impo ...

  4. Android 从相冊获取近期拍摄的多张照片(获取相机拍照所存储的照片)

    转载请标明出处:http://blog.csdn.net/android_ls/article/details/39928519 在做公司项目时.遇到的需求:自己定义显示照片的网格视图,显示用户近期採 ...

  5. BaiduMap_SDK_DEMO_3.0.0_for_Xamarin.Android_by_imknown

    2.4.2 已稳定, 同一时候已经放置到分支/Release 2.4.2了. 3.0.0 已开发完毕, 可是不推荐大家用于项目中, 请观望或者自己进一步调试. 个人感觉尽管3.0.0简化了开发, 可是 ...

  6. Hadoop Spark 集群简便安装总结

    本人实际安装经验,目的是为以后高速安装.仅供自己參考. 一.Hadoop 1.操作系统一如既往:①setup关掉防火墙.②vi /etc/sysconfig/selinux,改SELINUX=disa ...

  7. PHP 文件操作类(创建文件并写入) 生成日志

    <?php /** * 文件操作(生成日志)支持多条插入 * (假设插入多条语句并换行 用','逗号分开) * */ class log { public $path = './info.txt ...

  8. hdu4857 逃生 bestcoder round1 A

    题目要求要求在满足约束条件的情况下,使小的序号尽力靠前. 坑点就在这里.小的序号尽量靠前并非代表字典序,它要求多种情况时,先使1靠前(可能1仅仅能在第2或第3位 那么就要使它在第2位),其次2,3. ...

  9. poj3176--Cow Bowling(dp:数塔问题)

    Cow Bowling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14028   Accepted: 9302 Desc ...

  10. VC中Tab control的用法

    1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置I ...