1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.example.telnet;
17
18 import io.netty.bootstrap.Bootstrap;
19 import io.netty.channel.Channel;
20 import io.netty.channel.ChannelFuture;
21 import io.netty.channel.EventLoopGroup;
22 import io.netty.channel.MultiThreadIoEventLoopGroup;
23 import io.netty.channel.nio.NioIoHandler;
24 import io.netty.channel.socket.nio.NioSocketChannel;
25 import io.netty.example.util.ServerUtil;
26 import io.netty.handler.ssl.SslContext;
27
28 import java.io.BufferedReader;
29 import java.io.InputStreamReader;
30
31
32
33
34 public final class TelnetClient {
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", SSL? "8992" : "8023"));
39
40 public static void main(String[] args) throws Exception {
41
42 final SslContext sslCtx = ServerUtil.buildSslContext();
43
44 EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
45 try {
46 Bootstrap b = new Bootstrap();
47 b.group(group)
48 .channel(NioSocketChannel.class)
49 .handler(new TelnetClientInitializer(sslCtx));
50
51
52 Channel ch = b.connect(HOST, PORT).sync().channel();
53
54
55 ChannelFuture lastWriteFuture = null;
56 BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
57 for (;;) {
58 String line = in.readLine();
59 if (line == null) {
60 break;
61 }
62
63
64 lastWriteFuture = ch.writeAndFlush(line + "\r\n");
65
66
67
68 if ("bye".equals(line.toLowerCase())) {
69 ch.closeFuture().sync();
70 break;
71 }
72 }
73
74
75 if (lastWriteFuture != null) {
76 lastWriteFuture.sync();
77 }
78 } finally {
79 group.shutdownGracefully();
80 }
81 }
82 }