连接被远程主机强行关闭,这要怎么处理?

来源:爱站网时间:2021-11-22编辑:网友分享
最近爱站技术小编遇到一个问题:连接被远程主机强行关闭,这要怎么处理? 今天小编就把自己的方法给整理出了一份资料供大家参考参考。希望这个能帮助到大家。

问题描述


我的jSCSI声明中有一个java.nio.channels.SocketChannel,当我尝试打开大小大于4GB的驱动程序时,它正在断开连接。 iscsi RFC表示BasicHeaderSegment.BHS_FIXED_SIZE可能是48,因此在此位置,我可以读取通道上的字节。 Java文档说出5种错误,但我的应用抛出了最后一个未说明具体信息的错误。

  1. NotYetConnectedException
  2. ClosedChannelException
  3. AsynchronousCloseException
  4. ClosedByInterruptException
  5. IOException

代码:

public final int read(final SocketChannel sChannel) throws InternetSCSIException, IOException, DigestException {
// read Basic Header Segment first to determine the total length of this
// Protocol Data Unit.
clear();

final ByteBuffer bhs = ByteBuffer.allocate(BasicHeaderSegment.BHS_FIXED_SIZE);
int len = 0;
while (len 

错误:

java.io.IOException: An existing connection was forcibly closed by the remote host
    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:223)
    at sun.nio.ch.IOUtil.read(IOUtil.java:197)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
    at org.jscsi.parser.ProtocolDataUnit.read(ProtocolDataUnit.java:417)
    at org.jscsi.target.connection.TargetSenderWorker.receiveFromWire(TargetSenderWorker.java:145)
    at org.jscsi.target.connection.Connection$TargetConnection.receivePdu(Connection.java:217)
    at org.jscsi.target.connection.phase.TargetFullFeaturePhase.execute(TargetFullFeaturePhase.java:96)
    at org.jscsi.target.connection.Connection$TargetConnection.call(Connection.java:264)
    at org.jscsi.target.connection.Connection$TargetConnection.call(Connection.java:79)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
[pool-9-thread-1] INFO org.jscsi.target.connection

谢谢,费利佩

解决方法:


您的问题描述不正确。 SocketChannel未关闭:连接已关闭;尝试打开连接时不会发生这种情况:从连接中读取时会发生这种情况。

这通常是由于在对等方已经关闭连接后发送一些消息,这通常意味着您先前已经向它发送了一些无法理解的消息。

以上内容就是爱站技术频道小编为大家分享的连接被远程主机强行关闭,这要怎么处理?看完以上分享之后,大家应该都知道遇到这种问题要怎么处理了吧。

上一篇:怎么获取幸运数字?

下一篇:当没有Spring,Jersey框架可以正常工作的时候应该怎么办

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载