1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.example.objectecho;
17
18 import io.netty.bootstrap.Bootstrap;
19 import io.netty.channel.ChannelInitializer;
20 import io.netty.channel.ChannelPipeline;
21 import io.netty.channel.EventLoopGroup;
22 import io.netty.channel.nio.NioEventLoopGroup;
23 import io.netty.channel.socket.SocketChannel;
24 import io.netty.channel.socket.nio.NioSocketChannel;
25 import io.netty.example.echo.EchoClient;
26 import io.netty.handler.codec.serialization.ClassResolvers;
27 import io.netty.handler.codec.serialization.ObjectDecoder;
28 import io.netty.handler.codec.serialization.ObjectEncoder;
29 import io.netty.handler.ssl.SslContext;
30 import io.netty.handler.ssl.SslContextBuilder;
31 import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
32
33
34
35
36 public final class ObjectEchoClient {
37
38 static final boolean SSL = System.getProperty("ssl") != null;
39 static final String HOST = System.getProperty("host", "127.0.0.1");
40 static final int PORT = Integer.parseInt(System.getProperty("port", "8007"));
41 static final int SIZE = Integer.parseInt(System.getProperty("size", "256"));
42
43 public static void main(String[] args) throws Exception {
44
45 final SslContext sslCtx;
46 if (SSL) {
47 sslCtx = SslContextBuilder.forClient()
48 .trustManager(InsecureTrustManagerFactory.INSTANCE).build();
49 } else {
50 sslCtx = null;
51 }
52
53 EventLoopGroup group = new NioEventLoopGroup();
54 try {
55 Bootstrap b = new Bootstrap();
56 b.group(group)
57 .channel(NioSocketChannel.class)
58 .handler(new ChannelInitializer<SocketChannel>() {
59 @Override
60 public void initChannel(SocketChannel ch) throws Exception {
61 ChannelPipeline p = ch.pipeline();
62 if (sslCtx != null) {
63 p.addLast(sslCtx.newHandler(ch.alloc(), HOST, PORT));
64 }
65 p.addLast(
66 new ObjectEncoder(),
67 new ObjectDecoder(ClassResolvers.cacheDisabled(null)),
68 new ObjectEchoClientHandler());
69 }
70 });
71
72
73 b.connect(HOST, PORT).sync().channel().closeFuture().sync();
74 } finally {
75 group.shutdownGracefully();
76 }
77 }
78 }