版本: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..."); } } }
分别运行服务器端和客户端