我正在使用 netty 编写 SSL 服务器,遵循安全聊天示例。
我有自动化测试
- 打开一个 ssl 连接
- 来回交流一阵子
- 关闭频道
(即客户端完成后关闭通道)
测试全部通过,我的管道中有另一个处理程序实现了“exceptionCaught”。有时,当客户端关闭通道时,这会在服务器上生成一个 ExceptionCaught 事件
java.io.IOException: An established connection was aborted by the software in your host machine
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:218)
at sun.nio.ch.IOUtil.read(IOUtil.java:186)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:359)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:66)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:364)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:238)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:38)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
通过在 SSLHandler 上方和下方添加一个简单的日志记录下游处理程序,我确定 SSLHandler 在客户端关闭通道后似乎正在生成下游写入事件,但我不确定这是否相关。
关于这里发生了什么的任何指示?