import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; import java.net.InetSocketAddress; /** * Created by a on 2017/7/27. */ public class EchoClient { private final String host; private final int port; public EchoClient() { this(0); } public EchoClient(int port) { this("localhost", port); } public EchoClient(String host, int port) { this.host = host; this.port = port; } public void start() throws Exception { EventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap b = new Bootstrap(); b.group(group) // 注册线程池 .channel(NioSocketChannel.class) // 使用NioSocketChannel来作为连接用的channel类 .remoteAddress(new InetSocketAddress(this.host, this.port)) // 绑定连接端口和host信息 .handler(new ChannelInitializer() { // 绑定连接初始化器 @Override protected void initChannel(SocketChannel ch) throws Exception { System.out.println("connected..."); ch.pipeline().addLast(new EchoClientHandler()); } }); System.out.println("created.."); ChannelFuture cf = b.connect().sync(); // 异步连接服务器 System.out.println("connected..."); // 连接完成 cf.channel().closeFuture().sync(); // 异步等待关闭连接channel System.out.println("closed.."); // 关闭完成 } finally { group.shutdownGracefully().sync(); // 释放线程池资源 } } public static void main(String[] args) throws Exception { new EchoClient("127.0.0.1", 65535).start(); // 连接127.0.0.1/65535,并启动 } }