客户端初始化

创建引导类,确认线程模型,IO模型,以及业务处理逻辑。

客户端只需要一个线程模型即可,毕竟不是服务端不需要一个统一的线程模型去管理很多连接,客户端只需要一个线程模型主动去连接服务端就行了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class NettyClient {
public static void main(String[] args) {
NioEventLoopGroup workerGroup = new NioEventLoopGroup();

Bootstrap bootstrap = new Bootstrap();
bootstrap
// 1.指定线程模型
.group(workerGroup)
// 2.指定 IO 类型为 NIO
.channel(NioSocketChannel.class)
// 3.IO 处理逻辑
.handler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) {
}
});
// 4.建立连接
bootstrap.connect("127.0.0.1", 8080).addListener(future -> {
if (future.isSuccess()) {
System.out.println("连接成功!");
} else {
System.err.println("连接失败!");
}

});
}
}

connect 方法返回的是一个 Future,也就是说这个方是异步的,我们通过 addListener 方法可以监听到连接是否成功。

常用方法

attr()方法

  • 给客户端的Channel绑定自定义属性,通过channel.attr()取出属性,