netty入门学习(3)-客户端写消息,服务端应答
来源:互联网 发布:语音网络系统怎么注册 编辑:程序博客网 时间:2024/05/13 13:16
一:服务端
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(){@Overridepublic 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())); } }}
- netty入门学习(3)-客户端写消息,服务端应答
- Netty服务端和客户端搭建(入门)
- 利用Netty进行客户端和服务端交互的入门示例
- NuPlayer从服务端获取应答消息流程
- nuplayer处理服务端的应答消息notifyResponseListener
- Netty学习5-Netty3.X服务端与客户端
- netty学习十一:NIO客户端服务端通讯demo
- 2、NIO客户端和服务端示例代码(netty学习笔记)
- Netty初探-netty服务端和客户端demo
- Netty初探-netty服务端和客户端demo
- netty 简单服务端和客户端
- netty 服务端作为客户端跳转请求服务端
- SuperSocket 入门,实现客户端和服务端消息互发
- Netty Http协议栈开发(客户端&服务端)
- 【Netty源码分析】客户端connect服务端过程
- Netty实现客户端和服务端的通信
- Netty(二):服务端客户端实例分析
- netty 服务端和客户端创建流程
- UVALive 3644 X-Plosives
- windows性能监视器API
- boorstrap教程一
- Java synchronized详解
- shell经典书籍
- netty入门学习(3)-客户端写消息,服务端应答
- UVALive 3027 Corporative Network
- Linux启动ftp服务器530 Permission denied解决方法
- ActiveMQ 本地转本地再转远程的完整配置
- C++拷贝构造函数
- centos 6.2学习记录1--vncsever的安装配置
- 电话号码的正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号)
- iframe异步加载技术及性能
- 配置NFS服务器和NFS客户端