http://blog.csdn.net/kobejayandy/article/details/11493717
分类:开源精华网络编程2013-09-09
22:0524379人阅读收藏举报
先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。
如果你已经万事具备,那么我们先从一段代码开始。程序员们习惯的上手第一步,自然是"Hello world",不过Netty官网的例子却偏偏抛弃了"Hello world"。那我们就自己写一个最简单的"Hello world"的例子,作为上手。
-
-
-
-
-
-
-
-
publicclassHelloServer{
-
-
publicstaticvoidmain(Stringargs[]){
-
-
ServerBootstrapbootstrap=newServerBootstrap(
-
newNioServerSocketChannelFactory(
-
Executors.newCachedThreadPool(),
-
Executors.newCachedThreadPool()));
-
-
bootstrap
-
.setPipelineFactory(newChannelPipelineFactory(){
-
@Override
-
publicChannelPipelinegetPipeline()
-
throwsException{
-
returnChannels
-
.pipeline(newHelloServerHandler());
-
}
-
});
-
-
bootstrap.bind(newInetSocketAddress(8000));
-
}
-
-
privatestaticclassHelloServerHandlerextends
-
SimpleChannelHandler{
-
-
-
-
-
-
-
-
@Override
-
publicvoidchannelConnected(
-
ChannelHandlerContextctx,
-
ChannelStateEvente){
-
System.out.println("Helloworld,I'mserver.");
-
}
-
}
-
}
-
-
-
-
-
-
-
-
publicclassHelloClient{
-
-
publicstaticvoidmain(Stringargs[]){
-
-
ClientBootstrapbootstrap=newClientBootstrap(
-
newNioClientSocketChannelFactory(
-
Executors.newCachedThreadPool(),
-
Executors.newCachedThreadPool()));
-
-
bootstrap.setPipelineFactory(newChannelPipelineFactory(){
-
@Override
-
publicChannelPipelinegetPipeline()throwsException{
-
returnChannels.pipeline(newHelloClientHandler());
-
}
-
});
-
-
bootstrap.connect(newInetSocketAddress(
-
"127.0.0.1",8000));
-
}
-
-
privatestaticclassHelloClientHandlerextendsSimpleChannelHandler{
-
-
-
-
-
-
-
-
-
@Override
-
publicvoidchannelConnected(ChannelHandlerContextctx,
-
ChannelStateEvente){
-
System.out.println("Helloworld,I'mclient.");
-
}
-
}
-
}
既然是分布式的,自然要分多个服务。Netty中,需要区分Server和Client服务。所有的Client都是绑定在Server上的,他们之间是不能通过Netty直接通信的。(自己采用的其他手段,不包括在内。)。白话一下这个通信过程,Server端开放端口,供Client连接,Client发起请求,连接到Server指定的端口,完成绑定。随后便可自由通信。其实就是普通Socket连接通信的过程。
Netty框架是基于事件机制的,简单说,就是发生什么事,就找相关处理方法。就跟着火了找119,了找110一个道理。所以,这里,我们处理的是当客户端和服务端完成连接以后的这个事件。什么时候完成的连接,Netty知道,他告诉我了,我就负责处理。这就是框架的作用。Netty,提供的事件还有很多,以后会慢慢的接触和介绍。
你应该已经可以上手了:)
先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。
如果你已经万事具备,那么我们先从一段代码开始。程序员们习惯的上手第一步,自然是"Hello world",不过Netty官网的例子却偏偏抛弃了"Hello world"。那我们就自己写一个最简单的"Hello world"的例子,作为上手。
-
-
-
-
-
-
-
-
publicclassHelloServer{
-
-
publicstaticvoidmain(Stringargs[]){
-
-
ServerBootstrapbootstrap=newServerBootstrap(
-
newNioServerSocketChannelFactory(
-
Executors.newCachedThreadPool(),
-
Executors.newCachedThreadPool()));
-
-
bootstrap
-
.setPipelineFactory(newChannelPipelineFactory(){
-
@Override
-
publicChannelPipelinegetPipeline()
-
throwsException{
-
returnChannels
-
.pipeline(newHelloServerHandler());
-
}
-
});
-
-
bootstrap.bind(newInetSocketAddress(8000));
-
}
-
-
privatestaticclassHelloServerHandlerextends
-
SimpleChannelHandler{
-
-
-
-
-
-
-
-
@Override
-
publicvoidchannelConnected(
-
ChannelHandlerContextctx,
-
ChannelStateEvente){
-
System.out.println("Helloworld,I'mserver.");
-
}
-
}
-
}
-
-
-
-
-
-
-
-
publicclassHelloClient{
-
-
publicstaticvoidmain(Stringargs[]){
-
-
ClientBootstrapbootstrap=newClientBootstrap(
-
newNioClientSocketChannelFactory(
-
Executors.newCachedThreadPool(),
-
Executors.newCachedThreadPool()));
-
-
bootstrap.setPipelineFactory(newChannelPipelineFactory(){
-
@Override
-
publicChannelPipelinegetPipeline()throwsException{
-
returnChannels.pipeline(newHelloClientHandler());
-
}
-
});
-
-
bootstrap.connect(newInetSocketAddress(
-
"127.0.0.1",8000));
-
}
-
-
privatestaticclassHelloClientHandlerextendsSimpleChannelHandler{
-
-
-
-
-
-
-
-
-
@Override
-
publicvoidchannelConnected(ChannelHandlerContextctx,
-
ChannelStateEvente){
-
System.out.println("Helloworld,I'mclient.");
-
}
-
}
-
}
既然是分布式的,自然要分多个服务。Netty中,需要区分Server和Client服务。所有的Client都是绑定在Server上的,他们之间是不能通过Netty直接通信的。(自己采用的其他手段,不包括在内。)。白话一下这个通信过程,Server端开放端口,供Client连接,Client发起请求,连接到Server指定的端口,完成绑定。随后便可自由通信。其实就是普通Socket连接通信的过程。
Netty框架是基于事件机制的,简单说,就是发生什么事,就找相关处理方法。就跟着火了找119,了找110一个道理。所以,这里,我们处理的是当客户端和服务端完成连接以后的这个事件。什么时候完成的连接,Netty知道,他告诉我了,我就负责处理。这就是框架的作用。Netty,提供的事件还有很多,以后会慢慢的接触和介绍。
你应该已经可以上手了:)
分享到:
相关推荐
Java NIO框架Netty教程 很好的东西!
资源名称:Java_NIO框架Netty教程资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Java_NIO框架Netty教程.pdf
本篇文章主要介绍了Java NIO框架Netty简单使用的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java-NIO-Netty框架入门学习。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Java异步NIO框架Netty实现高性能高并发无标题笔记 1. 背景 1.1. 惊人的性能数据 最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨 节点...
视频分两部分:第一部分:深入浅出Netty源码剖析;第二部分:NIO+Netty5各种RPC架构实战演练(非加密)
java网络编程 nio-netty,想要学习netty的同学,这本书是非常好的资源。
jaca视频教程 jaca游戏服务器端开发 Netty NIO AIO Mina视频教程 课程目录: 一、Netty快速入门教程 01、第一课NIO 02、第二课netty服务端 03、第三课netty客户端 04、第四课netty线程模型源码分析(一) 05、...
本书详细的介绍了NIO框架netty的使用,并附有详细的使用案例,本书讲解通俗易懂,适合初学者快速入门。
深入Hotspot源码与Linux内核理解NIO与Netty线程模型
基于NIO的Netty框架实战-Netty
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制...
NIO 框架 netty 与 mina
NULL 博文链接:https://shaobenbin-gmail-com.iteye.com/blog/1859842
netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty开发之nio netty...
905.4-2014协议,是交通运输部公路科学研究院起草定制的一个协议标准,它也是基于TCP之上的一个应用层...学习Java开发领域Spring框架之外的东西; 想快速通过实战项目提升个人能力的同学。 想通过实战入门NIO、Netty。
NIO与Netty编程-课程讲义,包含 BIO、NIO、Io的介绍,NIO网络聊天的案列,自定义RPC的实现与设计