`

Netty笔记一(可以运行看到结果的简单例子)

阅读更多

最近一段时间一直研究聊天程序,学习了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很有帮助

 

 

9
5
分享到:
评论
1 楼 lianglong2000 2013-12-30  
非常感谢!

相关推荐

    Netty笔记源码资料.rar

    1.Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。 2.Netty 是一个 异步的、 基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。

    Netty基础,用于学习Netty,参考黑马程序员的netty教程

    Netty基础,用于学习Netty,参考黑马程序员的netty教程

    自动netty笔记111

    这个“自动Netty笔记111”可能是某个开发者或学习者记录的一系列关于Netty学习过程中的关键点和理解。下面将详细阐述Netty的相关知识点。 1. **异步事件驱动模型**: Netty采用了非阻塞I/O模型,基于Java NIO(Non...

    netty开发笔记

    - Netty采用了一种多线程模型,其中每个线程可以处理多个Channel。 - 一个Channel通常对应于一个网络连接。 - 这种模型有助于提高系统的并发能力,尤其是在处理大量连接时。 2. **线程阻塞的影响**: - 如果...

    Netty学习资料.zip

    这个“Netty学习资料.zip”压缩包包含了韩顺平老师关于 Netty 的一系列教学资源,包括资料、笔记、课件、代码和软件,这些都是深入理解和实践 Netty 技术的重要参考资料。 首先,资料部分可能包含了一些关于 Netty ...

    Netty全套学习资源(包括源码、笔记、学习文档等)

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它是 Java 平台上的一个开源项目,广泛应用于分布式系统、云计算平台、游戏服务器、聊天应用以及大数据传输等...

    Netty笔记二(发送对象--服务端客户端附可运行源码)

    Netty笔记二主要聚焦在如何使用Netty框架在服务端和客户端之间发送对象。Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。这篇博客提供了可运行的源码,方便读者...

    netty实现websocket例子

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,常用于开发高并发、高性能的服务器和客户端应用。WebSocket 协议则是一种在单个TCP连接上进行全双工通信的协议,它允许服务器和客户端实时交换数据,常用于...

    Netty5完整例子

    Netty5完整例子,里面包含编码,解码,心跳处理等,代码可用。 例子的内容是:服务端启动,客户端启动,客户端连接服务器后服务器发一个Message的对象给客户端,客户端接受并打印Message里边的内容。编解码的处理为:...

    netty-dome保证可以运行

    这个“netty-dome”压缩包提供了一个可以运行的 Netty 示例,帮助用户了解和学习如何在实际项目中应用 Netty。下面我们将深入探讨 Netty 的核心概念和这个 demo 演示了哪些知识点。 首先,Netty 的核心概念包括: ...

    Netty5入门3个简单例子

    总之,通过这三个简单的例子,你可以理解Netty的基本工作原理,包括服务器和客户端的搭建,以及处理器链的配置。继续探索Netty提供的丰富功能,如编解码器、心跳机制和多线程模型,将有助于你进一步提升在网络编程...

    Netty3.5代码例子

    在“Netty3.5代码例子”中,你可能会看到以下几个关键组件: - **Bootstrap**:这是启动服务器或客户端的入口点,配置网络连接的各种参数。 - **ServerBootstrap**:用于创建服务器端的Bootstrap。 - **...

    Netty的入门经典例子

    Netty 的主要特点是基于 NIO 的客户、服务器端编程框架,使用 Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty 支持 TCP 和 UDP 的 socket 服务,并且在处理大容量...

    自己学习netty的笔记和Demo

    6. **Netty源码剖析**:笔记-12探讨了Netty的启动过程,这对于理解Netty如何初始化和运行至关重要。此外,这也有助于开发者在遇到问题时能更深入地排查和解决问题。 7. **心跳检测和空闲连接处理**:笔记-7讲述了...

    Netty4.0 官网例子(免费)

    通过 Netty 的官网例子,你可以深入学习这些概念并了解如何在实际项目中运用。官方示例通常覆盖了基础到高级的各种用法,是理解和掌握 Netty4.0 的良好起点。你可以从 netty-4.0 压缩包中的源代码开始,逐步分析和...

    netty proxy 代理例子

    在“netty proxy 代理例子”中,我们将会探讨如何利用 Netty 实现一个代理服务器,该代理服务器可以转发客户端的请求到目标服务器,并将响应回传给客户端。 首先,我们需要理解代理服务器的基本原理。代理服务器...

    netty原理及例子

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它是Java领域非常流行的网络库,尤其在处理高并发、低延迟的网络应用中表现出色。本篇文章将深入探讨Netty的...

    netty4.0源码,netty例子,netty api文档

    通过研究源码、阅读API文档和运行示例,开发者可以掌握Netty的精髓,提升网络编程能力,并在实际项目中发挥出Netty的强大性能。无论你是初学者还是经验丰富的开发者,这套资源都将助你在Netty的世界里游刃有余。

    基于Netty网络编程项目实战笔记.7z

    《基于Netty网络编程项目实战笔记》是一份深入探讨Netty框架在实际网络编程中的应用文档。Netty,作为一款高性能、异步事件驱动的网络应用程序框架,广泛应用于各种网络应用开发,包括服务器和客户端的实现。这份...

    netty学习笔记

    通过以上分析,我们可以看到Netty不仅提供了一个简洁易用的接口来简化网络编程,还具有高度可定制性和扩展性,使其成为开发高性能网络应用的理想选择。无论是对于初学者还是经验丰富的开发者来说,掌握Netty都是非常...

Global site tag (gtag.js) - Google Analytics