您的位置:首页 > 运维架构 > Apache

使用mina时遇到“您的主机中的软件放弃了一个已建立的连接”问题解决

2017-11-02 16:53 411 查看
在使用mina长连接时候服务器端出现了如下异常:

十一月 02, 2017 2:29:28 下午 org.apache.mina.filter.logging.LoggingFilter log

警告: EXCEPTION :

java.io.IOException: 您的主机中的软件放弃了一个已建立的连接。

        at sun.nio.ch.SocketDispatcher.read0(Native Method)

        at sun.nio.ch.SocketDispatcher.read(Unknown Source)

        at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)

        at sun.nio.ch.IOUtil.read(Unknown Source)

        at sun.nio.ch.SocketChannelImpl.read(Unknown Source)

        at org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:317)

        at org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:45)

        at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:683)

        at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:659)

        at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:648)

        at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68)

        at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1120)

        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

        at java.lang.Thread.run(Unknown Source)

解决过程:

在网上找了很久没有结果,然后我通过Wireshark抓包检查码流,发现是客户端主动断开造成的,最后进一步对比码流发现是客户端发送到服务器端的心跳消息没有及时返回给客户端,造成握手消息错乱,导致了客户端主动断开连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐