Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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/8/lua/3.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 客户端异常:软件导致的连接中止:recv失败_Java_Sockets_Tcp - Fatal编程技术网

Java 客户端异常:软件导致的连接中止:recv失败

Java 客户端异常:软件导致的连接中止:recv失败,java,sockets,tcp,Java,Sockets,Tcp,我一直在玩我的Java客户端应用程序。行为与本帖(及其他帖子)非常相似: 到目前为止,我还没有找到答案——因此这篇文章。我知道哪里不对,但我不知道该怎么办 协议很简单-读取一些数据,发送回ACK并重复(直到终止) 我一直在关注WireShark的进展,似乎TCP窗口已经满了。我正在对DataOutputStream(针对ACK)执行flush(),但在一段时间后没有改变事实,因为我得到了这个异常(我可以在WireShark上看到,在Java异常之前总是有一个窗口问题) 因此,如何在Java中确

我一直在玩我的Java客户端应用程序。行为与本帖(及其他帖子)非常相似:

到目前为止,我还没有找到答案——因此这篇文章。我知道哪里不对,但我不知道该怎么办

协议很简单-读取一些数据,发送回ACK并重复(直到终止)

我一直在关注WireShark的进展,似乎TCP窗口已经满了。我正在对DataOutputStream(针对ACK)执行flush(),但在一段时间后没有改变事实,因为我得到了这个异常(我可以在WireShark上看到,在Java异常之前总是有一个窗口问题)

因此,如何在Java中确保我的TCP窗口/缓冲区是清晰的(我认为这是问题的根本原因?)似乎没有刷新DataInputStream。让人惊讶的是,当我读它的时候,TCP堆栈正在填满

非常感谢

标记

我已在下面附上基本代码调用:

     public void connectToServer()
 {
     //Create socket connection      
     try
     {
         if (lSocket == null)
         {
             lSocket = new Socket("localhost", 7651);
             lSocket.setSoTimeout(0);
             lInDataStream = new DataInputStream(lSocket.getInputStream());
             lOutDataStream = new DataOutputStream(lSocket.getOutputStream());
         }
     }
     catch (UnknownHostException e)
     {
         System.out.println("Unknown host: localhost");
     }
     catch  (IOException e)
     {
         System.out.println("No I/O");
     }       
 }

 public void readSocket() throws IOException
 {
     //Receive data from ROS SerialtoNetwork server
     if (lSocket != null)
     {
        lInDataStream.readInt();    
        lInDataStream.readFully(cbuf);

        lOutDataStream.writeBytes("Ack");
        lOutDataStream.flush();

        //String lstr = new String(cbuf);
        //System.out.print(lstr);
        //System.out.println(""); 
    }
 }

 public String getDataBuffer()
 {
     String lstr = new String(cbuf);
     return lstr;
 }

这表示持续的网络错误。有几篇(重复的)MSDN文章介绍了此错误,例如..

您可以添加捕获文件吗?可能重复