Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 远程主机已强制关闭连接_Java_Sockets_Ioexception_Socketchannel - Fatal编程技术网

Java 远程主机已强制关闭连接

Java 远程主机已强制关闭连接,java,sockets,ioexception,socketchannel,Java,Sockets,Ioexception,Socketchannel,我的jSCSI实现中有一个java.nio.channels.SocketChannel,当我试图打开一个大小大于4GB的驱动程序时,它正在断开连接。iscsi RFC表示BasicHeaderSegment.BHS_FIXED_大小可能为48,因此通过此位置,我可以读取通道上的字节。java文档指出了5种类型的错误,但我的应用程序抛出的最后一种错误没有说明具体信息 NotYetConnectedException ClosedChannel异常 异步关闭异常 ClosedByInterrupt

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

  • NotYetConnectedException
  • ClosedChannel异常
  • 异步关闭异常
  • ClosedByInterruptException
  • IOException
  • 代码:

    提前感谢,,
    Felipe

    您的问题描述不正确。SocketChannel未关闭:连接已关闭;当你试图打开连接时,它不会发生:当你从中阅读时,它会发生


    这通常是由于在对等方已经关闭连接之后发送了一些内容,这通常意味着您之前发送了一些它不理解的内容。

    看起来对方由于某种问题而断开了您的连接。假设您正在开发启动器,您应该检查目标(服务器)系统日志


    你能解释一下4GB的评论吗?我的意思是,“打开大小大于4GB的驱动程序”到底是什么意思,什么驱动程序?

    请注意标题的更正。你的袜子通道还开着。是连接被强制关闭。我正在这个链接上搜索iscsi的属性,也许我可以增加超时,但我不知道如何编辑超时与此无关。你似乎还没有读过这个答案。我必须安装乘以2的驱动程序。4Gb,8GB,16GB你是说“驱动器”,例如LUN,磁盘,对吗?因此,4GB看起来可疑。iSCSI本身没有任何与4GB相关的边缘条件。可能是SCSI级别的问题?再说一遍,目标日志中有什么有趣的东西吗?
    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 < BasicHeaderSegment.BHS_FIXED_SIZE) {
        int lens = sChannel.read(bhs);
        if (lens == -1) {
            // The Channel was closed at the Target (e.g. the Target does
            // not support Multiple Connections)
            // throw new ClosedChannelException();
            return lens;
        }
        len += lens;
        LOGGER.trace("Receiving through SocketChannel: " + len + " of maximal " + BasicHeaderSegment.BHS_FIXED_SIZE);
    
    }
    bhs.flip();
    
    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