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.nio.NioEventLoopGroup;
23 import io.netty.channel.socket.nio.NioSocketChannel;
24 import io.netty.handler.ssl.SslContext;
25 import io.netty.handler.ssl.SslContextBuilder;
26 import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
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;
43 if (SSL) {
44 sslCtx = SslContextBuilder.forClient()
45 .trustManager(InsecureTrustManagerFactory.INSTANCE).build();
46 } else {
47 sslCtx = null;
48 }
49
50 EventLoopGroup group = new NioEventLoopGroup();
51 try {
52 Bootstrap b = new Bootstrap();
53 b.group(group)
54 .channel(NioSocketChannel.class)
55 .handler(new TelnetClientInitializer(sslCtx));
56
57
58 Channel ch = b.connect(HOST, PORT).sync().channel();
59
60
61 ChannelFuture lastWriteFuture = null;
62 BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
63 for (;;) {
64 String line = in.readLine();
65 if (line == null) {
66 break;
67 }
68
69
70 lastWriteFuture = ch.writeAndFlush(line + "\r\n");
71
72
73
74 if ("bye".equals(line.toLowerCase())) {
75 ch.closeFuture().sync();
76 break;
77 }
78 }
79
80
81 if (lastWriteFuture != null) {
82 lastWriteFuture.sync();
83 }
84 } finally {
85 group.shutdownGracefully();
86 }
87 }
88 }