我有一个使用Netty
的项目,但存在一些问题:
如果connection
闲置了一段时间,connection
是否会自行关闭?如果它本身关闭,如何设置关闭时间?
有5个线程,它们发送100个数据。他们使用相同的渠道,例如
/** release connect*/
public void closeConnect(ChannelFuture writeFuture){
if(writeFuture != null){
writeFuture.awaitUninterruptibly();
}
future.getChannel().close();
future.getChannel().getCloseFuture().awaitUninterruptibly();
client.releaseExternalResources();
}
//write data
ChannelFuture future = Channels.write(data);
closeConnect(future);
上面的代码将导致
closeChannelexception
。我的问题是:如何避免例外?另外,当我在客户端上使用
ReadTimeoutHandler
并设置timeout
= 5s,并使线程休眠6s时,就会出现ReadTimeoutException
。当我调用e.getChannel().close()
时,它还会创建一个closeChannelException
。我如何自己处理异常或无异常地关闭连接? 最佳答案
如果API抛出了ReadTimeoutException
,则可以捕获它,然后调用closeConnect(...)
。
不过在我看来,该渠道已经关闭;因此,要么忽略CloseChannelException
要么处理它,以免影响程序状态。
关于java - 网络的紧密联系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12003773/