1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.example.uptime;
17
18 import io.netty.bootstrap.Bootstrap;
19 import io.netty.channel.ChannelFuture;
20 import io.netty.channel.ChannelFutureListener;
21 import io.netty.channel.ChannelInitializer;
22 import io.netty.channel.EventLoopGroup;
23 import io.netty.channel.MultiThreadIoEventLoopGroup;
24 import io.netty.channel.nio.NioIoHandler;
25 import io.netty.channel.socket.SocketChannel;
26 import io.netty.channel.socket.nio.NioSocketChannel;
27 import io.netty.handler.timeout.IdleStateHandler;
28
29
30
31
32
33
34
35 public final class UptimeClient {
36
37 static final String HOST = System.getProperty("host", "127.0.0.1");
38 static final int PORT = Integer.parseInt(System.getProperty("port", "8080"));
39
40 static final int RECONNECT_DELAY = Integer.parseInt(System.getProperty("reconnectDelay", "5"));
41
42 private static final int READ_TIMEOUT = Integer.parseInt(System.getProperty("readTimeout", "10"));
43
44 private static final UptimeClientHandler handler = new UptimeClientHandler();
45 private static final Bootstrap bs = new Bootstrap();
46
47 public static void main(String[] args) throws Exception {
48 EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
49 bs.group(group)
50 .channel(NioSocketChannel.class)
51 .remoteAddress(HOST, PORT)
52 .handler(new ChannelInitializer<SocketChannel>() {
53 @Override
54 protected void initChannel(SocketChannel ch) throws Exception {
55 ch.pipeline().addLast(new IdleStateHandler(READ_TIMEOUT, 0, 0), handler);
56 }
57 });
58 bs.connect();
59 }
60
61 static void connect() {
62 bs.connect().addListener(new ChannelFutureListener() {
63 @Override
64 public void operationComplete(ChannelFuture future) throws Exception {
65 if (future.cause() != null) {
66 handler.startTime = -1;
67 handler.println("Failed to connect: " + future.cause());
68 }
69 }
70 });
71 }
72 }