lizengfa 2014-06-27 03:22 采纳率: 0%
浏览 1643

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

问题是这样的:

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

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

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

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

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

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

  • 写回答

1条回答

  • MiceRice 2014-11-29 04:13
    关注

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)