1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.example.worldclock;
17
18 import io.netty.bootstrap.Bootstrap;
19 import io.netty.channel.Channel;
20 import io.netty.channel.EventLoopGroup;
21 import io.netty.channel.nio.NioEventLoopGroup;
22 import io.netty.channel.socket.nio.NioSocketChannel;
23 import io.netty.handler.ssl.SslContext;
24 import io.netty.handler.ssl.SslContextBuilder;
25 import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
26
27 import java.util.Arrays;
28 import java.util.List;
29
30
31
32
33
34 public final class WorldClockClient {
35
36 static final boolean SSL = System.getProperty("ssl") != null;
37 static final String HOST = System.getProperty("host", "127.0.0.1");
38 static final int PORT = Integer.parseInt(System.getProperty("port", "8463"));
39 static final List<String> CITIES = Arrays.asList(System.getProperty(
40 "cities", "Asia/Seoul,Europe/Berlin,America/Los_Angeles").split(","));
41
42 public static void main(String[] args) throws Exception {
43
44 final SslContext sslCtx;
45 if (SSL) {
46 sslCtx = SslContextBuilder.forClient()
47 .trustManager(InsecureTrustManagerFactory.INSTANCE).build();
48 } else {
49 sslCtx = null;
50 }
51
52 EventLoopGroup group = new NioEventLoopGroup();
53 try {
54 Bootstrap b = new Bootstrap();
55 b.group(group)
56 .channel(NioSocketChannel.class)
57 .handler(new WorldClockClientInitializer(sslCtx));
58
59
60 Channel ch = b.connect(HOST, PORT).sync().channel();
61
62
63 WorldClockClientHandler handler = ch.pipeline().get(WorldClockClientHandler.class);
64
65
66 List<String> response = handler.getLocalTimes(CITIES);
67
68
69 ch.close();
70
71
72 for (int i = 0; i < CITIES.size(); i ++) {
73 System.out.format("%28s: %s%n", CITIES.get(i), response.get(i));
74 }
75 } finally {
76 group.shutdownGracefully();
77 }
78 }
79 }