上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
5.1 客户端启动Demo
对于客户端的启动来说,和服务端的启动类似,依然需要线程模型、IO模型,以及IO业务处理逻辑三大参数。下面我们来看一下客户端启动的标准流程。
NettyClient.java
从上面的代码可以看到,客户端启动的引导类是Bootstrap,负责启动客户端和连接服务端;而在服务端启动的时候,这个引导类是ServerBootstrap。引导类创建完成之后,客户端启动的流程如下。
1.与服务端的启动一样,需要给它指定线程模型,驱动连接的数据读写,这个线程的概念可以和第1章中IOClient.java创建的线程联系起来。
2.指定IO模型为NioSocketChannel,表示IO模型为NIO。当然,你可以设置IO模型为OioSocketChannel,但是通常不会这么做,因为Netty的优势在于NIO。
3.给引导类指定一个Handler,主要定义连接的业务处理逻辑,不理解没关系,在后面会详细分析。
4.配置完线程模型、IO模型、业务处理逻辑之后,调用connect方法进行连接,可以看到connect方法有两个参数,第一个参数可以填写IP或者域名,第二个参数填写端口号。由于connect方法返回的是一个Future,也就是说这个方法是异步的,通过addListener方法可以监听连接是否成功,进而打印连接信息。
到了这里,一个客户端启动的Demo就完成了,其实只要和客户端Socket编程模型对应起来,这里的三个概念就会显得非常简单。读者如果忘掉了,可以先回顾一下第1章的IOClient.java,再来看这里的启动流程。