`
bzhjian
  • 浏览: 6530 次
  • 性别: 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]

    相关推荐

      netty权威指南第二版源码

      netty权威指南第二版源码 支持5.0.0.Alpha1,包含原书例子代码和jar包

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

      netty权威指南 第2版 例程, 自己敲的,验证过。 netty权威指南是一本非常不错的书,强烈推荐阅读。

      ieda+netty.zip

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

      nettyhello_V0.1_IDEA.zip

      Netty入门-第一个例子HelloWorld,包含服务端和客户端代码。说明:所有代码属于从互联网、书本拷贝或者加工处理,能满足运行要求只用于交流和学习用 ———————————————— 版权声明:本文为CSDN博主「m0...

      JAVA上百实例源码以及开源项目

      4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在...

      JAVA上百实例源码以及开源项目源代码

      4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在...

      微信小程序之WebSocket

      1、第一步,我们要先生成扫雷的地图场景 这个算法比较简单,简述一下。随机取某行某列就可以定位一个格子,标记成金子(-1表示金子)。mimeCnt表示要生成的金子的数量,用同样的方式循环标记mimeCnt个随机格子。生成...

      Apple推送服务(APNs)Java客户端zpush.zip

      Apple APNs java client, based on netty4. 基于netty4实现的苹果通知推送服务Java客户端。 特点: 支持第三版通知推送,即command = 2。目前的绝大部分Java客户端都只支持command = 1,即第二版。 ...

      spring-boot示例项目

      spring boot demo 是一个Spring Boot、Spring Cloud的项目示例,根据市场主流的后端技术,共集成了30+个demo,未来将持续更新。该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis...

      Dubbo服务框架-其他

      可以启用一个可选的检查器来检查消费者是否发送了允许的序列化 ID,消费者是否收到了与发送给提供者相同的序列化 ID。您可以设置serialization.security.check为true启用此功能。 更改列表 疏散不必要的例子 初始化...

      Linux多线程服务端编程:使用muduo C++网络库

      第1部分C++ 多线程系统编程 第1章线程安全的对象生命期管理3 1.1当析构函数遇到多线程. . . . . . . . . . . . . . . . .. . . . . . . . . . . 3 1.1.1线程安全的定义. . . . . . . . . . . . . . . . .. . . . . ....

    Global site tag (gtag.js) - Google Analytics