netty入门学习(3)-客户端写消息,服务端应答
2013-05-29 16:43
337 查看
一:服务端
二:客户端
import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; 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.MessageEvent; import org.jboss.netty.channel.SimpleChannelHandler; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; public class NioServer { public static void main(String args[]){ //Server服务启动器 ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(),Executors.newCachedThreadPool())); //设置处理客户端消息和各种消息事件的类(Handler) bootstrap.setPipelineFactory(new ChannelPipelineFactory(){ @Override public ChannelPipeline getPipeline() throws Exception { return Channels.pipeline(new BusinessHandler()); } }); //绑定8000端口供客户端访问 bootstrap.bind(new InetSocketAddress(8000)); } private static class BusinessHandler extends SimpleChannelHandler{ @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { ChannelBuffer buffer = (ChannelBuffer)e.getMessage(); System.out.println("Receive:"+buffer.toString(Charset.defaultCharset())); String msg = buffer.toString(Charset.defaultCharset()) + "has been processed!"; ChannelBuffer buffer2 = ChannelBuffers.buffer(msg.length()); buffer2.writeBytes(msg.getBytes()); e.getChannel().write(buffer2); } } }
二:客户端
import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.ChannelFuture; 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.MessageEvent; import org.jboss.netty.channel.SimpleChannelHandler; import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; public class NioClient { public static void main(String args[]){ // Client服务启动器 ClientBootstrap bootstrap = new ClientBootstrap( new NioClientSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); // 设置一个处理服务端消息和各种消息事件的类(Handler) bootstrap.setPipelineFactory(new ChannelPipelineFactory() { @Override public ChannelPipeline getPipeline() throws Exception { return Channels.pipeline(new RequestHandler()); } }); // 连接到本地的8000端口的服务端 ChannelFuture future = bootstrap.connect(new InetSocketAddress( "127.0.0.1", 8000)); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } if(future.isSuccess()){ ChannelBuffer buffer = ChannelBuffers.buffer("Request001".length()); buffer.writeBytes("Request001".getBytes()); future.getChannel().write(buffer); } } private static class RequestHandler extends SimpleChannelHandler { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { ChannelBuffer buffer = (ChannelBuffer)e.getMessage(); System.out.println(buffer.toString(Charset.defaultCharset())); } } }
相关文章推荐
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
- 分享下我学习Thrift的入门例子helloworld,客户端用php,服务端用python:
- Netty4 学习笔记之一:客户端与服务端通信 demo
- 分享下我学习Thrift的入门例子helloworld,客户端用php,服务端用python
- netty学习十一:NIO客户端服务端通讯demo
- Netty学习之服务端客户端搭建(1)
- netty学习九:(window7上)python客户端通过thrift调用java服务端
- <Netty>(六)(入门篇)noi服务端序列图代码和客户端序列图代码
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答 推荐
- Apache CXF 学习-使用MTOM来从客户端发送带附件的SOAP消息到服务端 推荐
- Netty学习心得 netty服务端和客户端的连接
- 利用Netty进行客户端和服务端交互的入门示例
- Netty学习5-Netty3.X服务端与客户端
- Apache CXF 学习-使用MTOM来让客户端接收从服务端发过来的带附件的SOAP消息
- Netty入门之客户端与服务端通信(二)
- Netty服务端和客户端搭建(入门)
- netty学习之一 netty入门
- JavaWeb从入门到放弃(9)-实现一个客户端上传文件到服务端
- 2、Java WebSocket实现服务端主动发消息给客户端
- Android开源中国客户端学习 消息模块