最近一段时间一直研究聊天程序,学习了nio的知识,以后会和大家分享的,今天写了一个可以运行看到结果的netty helloworld程序,这个程序虽然简单,但从这个程序可以知道netty的运行流程,希望对初学者有所帮助。
第一步:建立一个maven项目,或者读者可以自己导入netty依赖包
<dependency> <groupId>io.netty</groupId> <artifactId>netty</artifactId> <version>3.5.6.Final</version> </dependency>
现在netty 4.0已经出来了,因为3.x版本的资料比较多有利于学习,先从3.x开始了,以后会继续出4.x的学习笔记的,呵呵,上程序了
第二步:复制下面代码到项目中
package com.my.day1; import java.net.InetSocketAddress; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelHandler; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; import org.jboss.netty.handler.codec.string.StringDecoder; import org.jboss.netty.handler.codec.string.StringEncoder; /** * @Title: NettyDemo.java * @Package com.my.day1 * @Description: 一个类完整运行netty,运行就能看到结果 * @author jimmy lovelyxuehanxin@163.com * @date 2013-4-16 下午9:38:29 */ public class NettyDemo { public static void main(String[] args) { NioServer server = new NioServer(); } } class NioServer{ ServerBootstrap bootstrap; Channel parentChannel; InetSocketAddress localAddress; MyChannelHandler channelHandler = new MyChannelHandler(); public NioServer(){ bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); ChannelPipeline pineline = bootstrap.getPipeline(); // String格式字符串解码写的时候都会经过这个过滤器处理 pineline.addLast("encode", new StringEncoder()); // 接受信息的时候会被处理 pineline.addLast("decode", new StringDecoder()); // 自定义处理类,我们的业务一般从这个类开始 pineline.addLast("servercnfactory", channelHandler); bootstrap.bind(new InetSocketAddress(8080)); } } // 处理channel中的数据,SimpleChannelHandler帮我们实现好了很多有用户的方法这里就只重写了几个方法 class MyChannelHandler extends SimpleChannelHandler{ // netty默认信息接受入口 @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { System.out.println("接受到的信息" + e.getMessage()); // 返回信息可以在dos对话框中看到自己输的内容 e.getChannel().write(e.getMessage()); super.messageReceived(ctx, e); } @Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { System.out.println("channel Connected......"); super.channelConnected(ctx, e); } @Override public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { System.out.println("channelClosed"); super.channelClosed(ctx, e); } }
第三步:运行上面的代码,cmd打开dos窗口输入telnet 127.0.0.1 8080 输入内容 程序就可以打印你输入的内容并且可以在dos命令框里打印出你输入的内容。
总结:这个列子很简单,可以清楚程序怎么运行的,对理解netty很有帮助
相关推荐
1.Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。 2.Netty 是一个 异步的、 基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。
利用netty开发proxy笔记,和一位大牛netty人员一起讨论出的谈话结果笔记 非常给力
netty学习笔记
Netty5完整例子,里面包含编码,解码,心跳处理等,代码可用。 例子的内容是:服务端启动,客户端启动,客户端连接服务器后服务器发一个Message的对象给客户端,客户端接受并打印Message里边的内容。编解码的处理为:...
将netty官方提供的例子运用idea工具整理出来并可以运行
Netty基础,用于学习Netty,参考黑马程序员的netty教程
netty4 demo 可以完美运行的demo,先启动ObjectServerMain,在启动ObjectClientMain 就可以看见效果
Netty学习笔记_Springboot实现自定义协议.docx Netty学习笔记_Springboot实现自定义协议.docx Netty学习笔记_Springboot实现自定义协议.docx
Netty5入门3个简单例子,让你快速入门,一个服务端、客户端,以及一个参考的网站地址;Netty5是个优秀稳定高效的java服务器框架,特别适用于java游戏服务器快速开发!
使用netty作为proxy的例子。 maven。 直接运行
对于学习netty做的个人笔记,基本上涵盖了netty的基本结构,原理,以及重要的组件知识。
netty入门到精通学习笔记和demo
最近学习netty,整理出来的几个小例子: 1、netty_hello,client可在控制台输入信息,server回复; 2、netty_heart,只有server,可用系统自带的telnet连接!10s没有读写会自动踢掉客户端; 3、packagetest,粘包...
netty实现websocket,客户端向服务端发送信息,然后服务器返回当前时间。连接成功后也可向客户端主动发信息。
netty例子以及原理,以及在淘宝中应用
原理及例子,适合入门阶段学习以及提高,简单明了的例子,使你更快掌握
最近初学netty,收集了网上资料,自己写了个简单的netty入门实例
Netty 聊天 小例子 非常适合初学者
基于netty技术,网络编程项目实战笔记
本代码用一个文件服务器为背景,用netty写的http协议开发例子。希望大家有所帮助。