`
bzhjian
  • 浏览: 6721 次
  • 性别: Icon_minigender_1
  • 来自: 桂林
社区版块
存档分类
最新评论

第一个netty4的例子

阅读更多

这个例子参与http://netty.io/wiki/user-guide-for-4.x.html文档实现,主要是服务器接收并打印命令行输入的字符,例子简单直接上代码:

import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.util.ReferenceCountUtil;

public class DemoServer1 {

	public static void main(String[] args) throws InterruptedException {
		ServerBootstrap bootstrap = new ServerBootstrap();
		EventLoopGroup bossGroup = new NioEventLoopGroup(1); // (1)
	    EventLoopGroup workerGroup = new NioEventLoopGroup(1);
	    try{
	    	bootstrap.group(bossGroup, workerGroup);
		    bootstrap.channel(NioServerSocketChannel.class);
		   
		    bootstrap.childHandler(new ChannelInitializer<SocketChannel>(){

				@Override
				protected void initChannel(SocketChannel ch) throws Exception {
					ch.pipeline().addLast(new MyHandler());
				}
		    	
		    });
		    bootstrap.option(ChannelOption.SO_BACKLOG, 128);
		    bootstrap.childOption(ChannelOption.SO_KEEPALIVE, true);
		    ChannelFuture cfuture = bootstrap.bind(8080).sync();
		   cfuture.channel().closeFuture().sync();

	    }finally{
	    	workerGroup.shutdownGracefully();
	    	bossGroup.shutdownGracefully();
	    }
    
	}

}

class MyHandler extends ChannelInboundHandlerAdapter  {
	private int index = 1;

	@Override
	public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { 
		cause.printStackTrace();
		ctx.close();
	}
	@Override
	public void channelRead(ChannelHandlerContext ctx, Object msg)
			throws Exception {
		//super.channelRead(ctx, msg);

		  try {
			  System.out.println(((ByteBuf)msg).readableBytes());
			 // System.out.println(((ByteBuf)msg).toString());
			 System.out.println( ((ByteBuf)msg).toString(io.netty.util.CharsetUtil.US_ASCII));
			 System.out.println( ((ByteBuf)msg).toString(io.netty.util.CharsetUtil.US_ASCII));

			  //ctx.write(msg);
			  //ctx.flush();
			 
		    } finally {
		        ReferenceCountUtil.release(msg);
		    }
	}
	@Override
	public void channelActive(ChannelHandlerContext ctx) throws Exception {
		super.channelActive(ctx);
	}
}

     服务启动后,直接使用telnet就可以和服务进行通信。 

    后边的章节写一下Netty4怎么实现整个NIO通信过程。

 

分享到:
评论
1 楼 araning 2013-11-20  
[list]
  • [list]
  • [*][list]
  • [*][*][list]
  • [*][*][*][list]
  • [*][*][*][*][list]
  • [*][*][*][*][*][list]
  • [*][*][*][*][*][*][list]
  • [*][*][*][*][*][*][*][list]
  • [*][*][*][*][*][*][*][*][list]
  • [*][*][*][*][*][*][*][*][*][list]
  • [*][*][*][*][*][*][*][*][*][*][list]
  • [*][*][*][*][*][*][*][*][*][*][*][*]
    引用
    引用
    引用
    引用
    引用
    引用
    引用
    引用
    [u][i][b][/b][/i][/u]
  • [*][*][*][*][*][*][*][*][*][*][/list]
  • [*][*][*][*][*][*][*][*][*][/list]
  • [*][*][*][*][*][*][*][*][/list]
  • [*][*][*][*][*][*][*][/list]
  • [*][*][*][*][*][*][/list]
  • [*][*][*][*][*][/list]
  • [*][*][*][*][/list]
  • [*][*][*][/list]
  • [*][*][/list]
  • [*][/list]
  • [/list]
  • [/list]

    相关推荐

      Netty4详解二:开发第一个Netty应用程序

      在本篇文章中,我们将深入探讨如何使用Netty4开发第一个Netty应用程序,以此来理解其核心概念和工作原理。 首先,我们要明白Netty的基本架构。Netty基于NIO(非阻塞I/O)设计,通过EventLoop(事件循环)和Channel...

      Netty5入门3个简单例子

      第一个例子是"服务端"。在Netty中,服务端通常由`ServerBootstrap`类初始化。`ServerBootstrap`负责配置服务器,并创建一个`Bootstrap`实例来绑定监听端口。我们会在`ChannelInitializer`中设置管道(Pipeline),这...

      netty简单实例

      1. **Channel**:在 Netty 中,Channel 表示一个连接,它可以是 TCP、UDP 或其他协议。Channel 用于读写数据,并且可以注册监听器来处理 I/O 事件。 2. **Bootstrap**:Bootstrap 是启动服务器或客户端的辅助类。它...

      Netty 框架学习 —— 第一个 Netty 应用(csdn)————程序.pdf

      在本篇关于“Netty框架学习——第一个Netty应用”的文章中,我们将深入理解如何使用Netty构建一个简单的Echo服务器和客户端。Netty是一个高性能、异步事件驱动的网络应用程序框架,广泛应用于Java领域的服务器开发。...

      Netty权威指南PDF书籍

      Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这本书籍《Netty 权威指南》深入浅出地介绍了 Netty 的核心概念、设计模式以及实际应用,是 IT 开发者深入...

      netty权威指南第二版源码 maven项目 支持messagepack

      Netty,作为一个高性能、异步事件驱动的网络应用框架,被广泛应用于Java领域,尤其是对于高并发、低延迟的网络应用开发。这本书的源码提供了深入理解Netty工作原理的机会,同时也揭示了如何构建高效、可扩展的网络...

      netty权威指南第二版源码

      这个资源包含了支持 Netty 5.0.0.Alpha1 版本的源码,这是一个早期的开发版本,可能包含了一些新的特性和改进,对于开发者来说是研究和学习 Netty 进化过程的宝贵资料。 首先,让我们来了解 Netty 的核心概念和组件...

      netty权威指南第二版 maven版本源码

      1. **Netty的Channel**: Channel是Netty中的基础概念,它代表了一个网络连接,可以是TCP连接、UDP连接或者一个本地文件通道。Channel提供了读写数据、注册到EventLoop以及获取连接状态等方法。 2. **EventLoop与...

      jboss netty5.0

      这里我们关注的是 Netty 的第五个主要版本,即 Netty 5.0。尽管在撰写本文时,Netty 的最新稳定版本是 4.x 系列,但了解早期版本对于理解其发展历程和基本原理仍然很有价值。 标题 "jboss netty5.0" 提及了 JBoss,...

      netty权威指南例子源码(第2-7章)

      Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这本书《Netty权威指南》的第二版,提供了丰富的实例代码,帮助读者深入理解并掌握Netty的核心概念和技术。...

      netty传输对象源码

      Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在这个“netty传输对象源码”的主题中,我们将深入理解如何使用Netty来传输自定义的对象,同时结合Spring和...

      netty 第五版

      Netty是一个高性能、异步事件驱动的网络应用框架,它为Java开发人员提供了构建服务器和客户端应用的强大工具。在Netty第五版中,作者深入探讨了如何利用Java NIO(非阻塞I/O)技术来实现高效的网络通信。 1. Netty...

      netty-in-action中文版

      #### 第一个Netty应用 - **设置开发环境**:为了开始使用Netty,首先需要配置合适的开发环境,如安装Java环境、集成开发环境(IDE)等。 - **Netty客户端/服务端总览**:通过概述客户端和服务端的基本结构,帮助读者...

      Netty测试代码,尤其对于Pipeline顺序

      当一个事件(如数据接收)发生时,它会从第一个处理器开始,沿着Pipeline向后传递,直到最后一个处理器。每个处理器都有机会处理这个事件,或者将事件传递给下一个处理器。这种设计使得我们可以灵活地组合和定制...

      Essential Netty In Action

      描述中提到的知识点包括Netty异步和数据驱动的基本概念、如何设置开发环境、构建第一个Netty应用,以及编写echo服务器和客户端的示例。这些内容是初学者掌握Netty的基础。描述还提到了Netty的编解码器框架,包括解码...

      ieda+netty.zip

      在第一次会议上,你得知该系统必须要能够扩展到支撑 100000 名并发用户,并且不能有任何的性能损失,这时所有的目光都投向了你。你会怎么说呢? 你可以自信地说:“当然,没问题。”然后留下一顿崇拜的目光离开,...

      Netty user guid

      - **1.7.2 第一个解决方案**:介绍如何解决上文提到的问题的第一个方法。 - **1.7.3 第二个解决方案**:提供第二种方法来处理基于流的传输问题。 - **1.8 使用 POJO 而不是 ChannelBuffer**:这里介绍了如何使用...

    Global site tag (gtag.js) - Google Analytics