在Server端開啟TCP keepalive: 兩種方式
serverBootstrap.childOption(ChannelOption.SO_KEEPALIVE, true); serverBootstrap.childOption(NioChannelOption.SO_KEEPALIVE,true)
提示:“.option(ChannelOption.SO_KEEPALIVE,true)”存在,但是無效。
兩種方式表面來看沒啥大區別,但是在跟蹤源碼的時候有這么一節:
在"NioSocketChannel"中有這個方法:
if語句里的"NioChannelOption.setOption()"和if外的調用“super.setOption()”其實就是區別所在,
if語句里進入則:
而外面的調用則是:
不難看出,上面的調用是JDK調用,下面的則是寫一堆if...else來確定的,很明顯,下面的方式沒有上面的好