Java 客户端异常:软件导致的连接中止:recv失败
我一直在玩我的Java客户端应用程序。行为与本帖(及其他帖子)非常相似: 到目前为止,我还没有找到答案——因此这篇文章。我知道哪里不对,但我不知道该怎么办 协议很简单-读取一些数据,发送回ACK并重复(直到终止) 我一直在关注WireShark的进展,似乎TCP窗口已经满了。我正在对DataOutputStream(针对ACK)执行flush(),但在一段时间后没有改变事实,因为我得到了这个异常(我可以在WireShark上看到,在Java异常之前总是有一个窗口问题) 因此,如何在Java中确保我的TCP窗口/缓冲区是清晰的(我认为这是问题的根本原因?)似乎没有刷新DataInputStream。让人惊讶的是,当我读它的时候,TCP堆栈正在填满 非常感谢 标记 我已在下面附上基本代码调用:Java 客户端异常:软件导致的连接中止:recv失败,java,sockets,tcp,Java,Sockets,Tcp,我一直在玩我的Java客户端应用程序。行为与本帖(及其他帖子)非常相似: 到目前为止,我还没有找到答案——因此这篇文章。我知道哪里不对,但我不知道该怎么办 协议很简单-读取一些数据,发送回ACK并重复(直到终止) 我一直在关注WireShark的进展,似乎TCP窗口已经满了。我正在对DataOutputStream(针对ACK)执行flush(),但在一段时间后没有改变事实,因为我得到了这个异常(我可以在WireShark上看到,在Java异常之前总是有一个窗口问题) 因此,如何在Java中确
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文章介绍了此错误,例如..您可以添加捕获文件吗?可能重复