Netty例子.

来源:互联网 发布:淘宝入会费298是真假 编辑:程序博客网 时间:2024/05/20 11:51
//服务端程序.    package netty;            import org.jboss.netty.bootstrap.ServerBootstrap;      import org.jboss.netty.channel.ChannelFactory;      import org.jboss.netty.channel.ChannelPipeline;      import org.jboss.netty.channel.ChannelPipelineFactory;      import org.jboss.netty.channel.Channels;      import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;      import org.jboss.netty.handler.codec.string.StringDecoder;      import org.jboss.netty.handler.codec.string.StringEncoder;            import java.net.InetSocketAddress;      import java.util.concurrent.Executors;         public class DiscardServer {          public static void main(String[] args) throws Exception {              ChannelFactory factory = new NioServerSocketChannelFactory(                  Executors.newCachedThreadPool(),                  Executors.newCachedThreadPool());              ServerBootstrap bootstrap = new ServerBootstrap (factory);              bootstrap.setPipelineFactory(new ChannelPipelineFactory() {                  public ChannelPipeline getPipeline() {                       ChannelPipeline pipeline = Channels.pipeline();                      pipeline.addLast("encode",new StringEncoder());                      pipeline.addLast("decode",new StringDecoder());                      pipeline.addLast("handler",new DiscardServerHandler());                      return pipeline;                  }              });              bootstrap.setOption("child.tcpNoDelay", true);              bootstrap.setOption("child.keepAlive", true);              bootstrap.bind(new InetSocketAddress(8080));  --监听端口号;        }      }      package netty;            import org.jboss.netty.buffer.ChannelBuffer;      import org.jboss.netty.buffer.ChannelBuffers;      import org.jboss.netty.channel.*;              public class DiscardServerHandler extends SimpleChannelUpstreamHandler  {          @Override          public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {             System.out.println("服务器接收1:"+e.getMessage());          }                @Override          public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) {              e.getChannel().write("Reply");          } @Override public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) { e.getCause().printStackTrace(); Channel ch = e.getChannel(); ch.close(); } }//客户端程序.    package netty;            import org.jboss.netty.bootstrap.ClientBootstrap;      import org.jboss.netty.channel.ChannelFactory;      import org.jboss.netty.channel.ChannelPipeline;      import org.jboss.netty.channel.ChannelPipelineFactory;      import org.jboss.netty.channel.Channels;      import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;      import org.jboss.netty.handler.codec.string.StringDecoder;      import org.jboss.netty.handler.codec.string.StringEncoder;            import java.net.InetSocketAddress;      import java.util.concurrent.Executors;             public class TimeClient {          public static void main(String[] args) throws Exception {                            ChannelFactory factory = new NioClientSocketChannelFactory(                  Executors.newCachedThreadPool(),                  Executors.newCachedThreadPool());              ClientBootstrap bootstrap = new ClientBootstrap(factory);              bootstrap.setPipelineFactory(new ChannelPipelineFactory() {                  public ChannelPipeline getPipeline() {                      ChannelPipeline pipeline = Channels.pipeline();                      pipeline.addLast("encode",new StringEncoder());                      pipeline.addLast("decode",new StringDecoder());                      pipeline.addLast("handler",new TimeClientHandler());                      return pipeline;                  }              });              bootstrap.setOption("tcpNoDelay" , true);              bootstrap.setOption("keepAlive", true);              bootstrap.connect (new InetSocketAddress("127.0.0.1", 8080));          }      }      package netty;             import org.jboss.netty.buffer.ChannelBuffer;      import org.jboss.netty.buffer.ChannelBuffers;      import org.jboss.netty.channel.*;            import java.util.Date;                  public class TimeClientHandler extends SimpleChannelUpstreamHandler  {          @Override          public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) {              e.getChannel().write("request");          }                @Override          public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {              System.out.println("服务器回复:" + e.getMessage());            e.getChannel().close();          }                    @Override          public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {              e.getCause().printStackTrace();              e.getChannel().close();          }      }  


原创粉丝点击