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 }
转载于:https://www.cnblogs.com/huzi007/p/5506669.html
相关资源:JAVA上百实例源码以及开源项目