netty socket 客服端编程

Posted 全力以赴001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了netty socket 客服端编程相关的知识,希望对你有一定的参考价值。

 1 package com.ming.netty.nio;
 2 
 3 import io.netty.bootstrap.Bootstrap;
 4 import io.netty.channel.ChannelFuture;
 5 import io.netty.channel.ChannelInitializer;
 6 import io.netty.channel.ChannelOption;
 7 import io.netty.channel.EventLoopGroup;
 8 import io.netty.channel.nio.NioEventLoopGroup;
 9 import io.netty.channel.socket.SocketChannel;
10 import io.netty.channel.socket.nio.NiosocketChannel;
11 
12 /**
13  * netty 客户端模拟
14  * @author mingge
15  *
16  */
17 public class TimeClient {
18     
19     
20     public static void main(String[] args) throws Exception{
21         new TimeClient().connect("127.0.0.1", 8400);
22     }
23 
24     public void connect(String addr,int port) throws Exception{
25         EventLoopGroup group=new NioEventLoopGroup();
26         try {
27             Bootstrap b=new Bootstrap();
28             b.group(group).channel(NioSocketChannel.class)
29             .option(ChannelOption.TCP_NODELAY, true)
30             .handler(new ChannelInitializer<SocketChannel>() {
31                 public void initChannel(SocketChannel ch) throws Exception{
32                     ch.pipeline().addLast(new TimeClientHandler());
33                 }
34             });
35             ChannelFuture f=b.connect(addr,port);
36             f.channel().closeFuture().sync();//等待客户端关闭连接
37         } catch (Exception e) {
38             // TODO: handle exception
39         }finally{
40             group.shutdownGracefully();
41         }
42     }
43 }
 1 package com.ming.netty.nio;
 2 
 3 import io.netty.buffer.ByteBuf;
 4 import io.netty.buffer.Unpooled;
 5 import io.netty.channel.ChannelHandlerAdapter;
 6 import io.netty.channel.ChannelHandlerContext;
 7 
 8 public class TimeClientHandler extends ChannelHandlerAdapter {
 9     
10     private final ByteBuf byteMsg;
11     
12     public TimeClientHandler() {
13         byte[] req="我是请求数据哦".getBytes();
14         byteMsg=Unpooled.buffer(req.length);
15         byteMsg.writeBytes(req);
16     }
17 
18     @Override
19     public void channelActive(ChannelHandlerContext ctx) throws Exception {
20         ctx.writeAndFlush(byteMsg);
21     }
22 
23     @Override
24     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
25         ByteBuf buf=(ByteBuf)msg;
26         byte[] req=new byte[buf.readableBytes()];
27         buf.readBytes(req);
28         String body=new String(req,"GBK");
29         System.out.println("body:"+body);
30     }
31 
32     @Override
33     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
34         //释放资源
35         ctx.close();
36     }
37 
38     
39 }

 

以上是关于netty socket 客服端编程的主要内容,如果未能解决你的问题,请参考以下文章

java中TCP服务端和客服端通讯

java如何实现两个客服端之间互相发送信息

基于流式套接字的回射客服端编程程序

Socket编程

CXF 客服端调用报错

使用Netty4和socket.js做IM客服坐席平台系统架构