package com.walker.tcp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioSocketChannel; public class HelloClient { public static String host = "127.0.0.1"; public static int port = 7878; /** * @param args * @throws InterruptedException * @throws IOException */ public static void main(String[] args) throws InterruptedException, IOException { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); b.group(group).channel(NioSocketChannel.class).handler(new HelloClientInitializer()); // 连接服务端 // Channel ch = b.connect(host, port).sync().channel(); Channel ch = b.connect(host, port).sync().channel(); // 发起模拟登陆 StringBuilder sb = new StringBuilder(); sb.append("IWAP00"); // sb.append("helloClient"); // sb.append("d1234567"); sb.append("000001"); sb.append("#"); ch.writeAndFlush(sb.toString()); // 控制台输入 BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); for (;;) { String line = in.readLine(); if (line == null) { continue; } /* * 向服务端发送在控制台输入的文本 并用"\r\n"结尾 * 之所以用\r\n结尾 是因为我们在handler中添加了 DelimiterBasedFrameDecoder 帧解码。 * 这个解码器是一个根据\n符号位分隔符的解码器。所以每条消息的最后必须加上\n否则无法识别和解码 * */ // ch.writeAndFlush(line + "\r\n"); ch.writeAndFlush(line + "#"); } } finally { // The connection is closed automatically on shutdown. group.shutdownGracefully(); } } }