跟闪电侠学Netty:Netty即时聊天实战与底层原理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

5.3 客户端启动的其他方法

5.3.1 attr()方法

attr()方法可以为客户端Channel也就是NioSocketChannel绑定自定义属性,然后通过channel.attr()方法取出这个属性。比如,上面的代码可以指定客户端Channel的clientName属性,属性值为nettyClient,其实就是为NioSocketChannel维护一个Map而已。后续在NioSocketChannel通过参数传来传去的时候,就可以通过它来取出设置的属性,非常方便。

5.3.2 option()方法

option()方法可以为连接设置一些TCP底层相关的属性,比如上面的代码中,我们设置了3种TCP属性,其中:

● ChannelOption.CONNECT_TIMEOUT_MILLIS表示连接的超时时间,超过这个时间,如果仍未连接到服务端,则表示连接失败。

● ChannelOption.SO_KEEPALIVE表示是否开启TCP底层心跳机制,true表示开启。

● ChannelOption.TCP_NODELAY表示是否开始Nagle算法,true表示关闭,false表示开启。通俗地说,如果要求高实时性,有数据发送时就马上发送,就设置为true;如果需要减少发送次数,减少网络交互,就设置为false。

其他参数这里就不一一讲解了,读者有兴趣可以去自行研究。