netty入门example

版本:3.2.1.Final

服务器端

package com.test.net;

import java.net.InetSocketAddress;
import java.util.concurrent.Executors;

import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.SimpleChannelHandler;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;

/**
 * 服务器端
 * @author root
 *
 */
public class TestNettyServer
{

	public static void main(String[] args)
	{
		//1.创建服务器端启动器
		ServerBootstrap serverBootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
		//2.创建一个管道工厂,返回一个管道,并为该管道绑定处理器
		serverBootstrap.setPipelineFactory(new ChannelPipelineFactory()
		{
			@Override
			public ChannelPipeline getPipeline() throws Exception
			{
				return Channels.pipeline(new HelloServerChannelHandler());
			}
		});
		//3.绑定端口
		serverBootstrap.bind(new InetSocketAddress(8989));
		System.out.println("服务器启动,端口是8989");
	}

	/**
	 * 事件处理器
	 * @author root
	 *
	 */
	private static class HelloServerChannelHandler extends SimpleChannelHandler
	{
		public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e)
		{
			System.out.println("One client has conneted...");
		}

	}

}

客户端:

package com.test.net;

import java.net.InetSocketAddress;
import java.util.concurrent.Executors;

import org.jboss.netty.bootstrap.ClientBootstrap;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.SimpleChannelHandler;
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;

/**
 * 客户端
 * @author root
 *
 */
public class TestNettyClient
{

	public static void main(String[] args)
	{
		//1.创建客户端启动器
		ClientBootstrap clientBootstrap = new ClientBootstrap(new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
		//2.创建一个管道工厂,返回一个管道,并为该管道绑定处理器
		clientBootstrap.setPipelineFactory(new ChannelPipelineFactory()
		{

			@Override
			public ChannelPipeline getPipeline() throws Exception
			{
				return Channels.pipeline(new HelloClientChannelHandler());
			}
		});
		//绑定要连接的ip和端口
		clientBootstrap.connect(new InetSocketAddress("localhost", 8989));

	}
	
	/**
	 * 事件处理器
	 * @author root
	 *
	 */
	private static class HelloClientChannelHandler extends SimpleChannelHandler
	{

		@Override
		public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception
		{
			System.out.println("connected...");
		}
		
	}

}

分别运行服务器端和客户端

猜你喜欢

转载自jxauwxj.iteye.com/blog/2225091