2 lizengfa lizengfa 于 2014.06.27 11:22 提问

遇到一个棘手的问题,需要java网络编程大神帮忙解答下~

问题是这样的:

我把MINA核心的非阻塞轮训方式的的代码用JDK7的AIO异步IO替换了,现在已经包装完成,测试的时候遇到两个问题:

测试的是这样的,服务端启动后20秒后释放所有资源关闭,客户端启动15秒后释放所有资源关闭,大部分情况下测试都是正常的,但是偶尔会出现客户端服务端都关闭后,再次启动服务的过程后,要么服务端抛出AsynchronousCloseException,客户端抛出远程主机强迫关闭一个现有连接;要么是客户端的读到一个-1,表示服务端已经关闭;

我怀疑是不是异步通道的关闭是不是就是“异步关闭”,需要比较长的时间释放资源,但想起来不太合理,因为JDK的这块源码是无法获取的所以也看不了源码;

基本上就是服务自动关闭或者强制KILL后,再次启动,就会出现上面的问题,过一会重启就可以正常~~~

这个问题困扰了两天了,无法解决,特地来这个大神聚集的地方,各位帮忙看看,探讨探讨,

如果需要代码包,可以跟我要~~~~~~

1个回答

ldh911
ldh911   Rxr 2014.11.29 12:13

首先程序中是如何关闭所有连接和监听的?
服务端关闭后有没有确定服务端进程确实完全结束了?
重新启动后,中间有没有时间间隔?多长?
另外下次可以用netstat监视下端口状态,是否端口确实已经没有占用了?

AsynchronousCloseException
当在某个信道的 I/O 操作中处于阻塞状态的某个线程被另一个线程关闭了该信道或部分信道时,该信道所接收的经过检查的异常。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!