Java错误 - 软件导致连接中止:recv失败

时间:2012-01-27 15:32:34

标签: java

完整错误是:

java.net.SocketException: Software caused connection abort: recv failed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:168)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:154)
    at java.io.BufferedReader.readLine(BufferedReader.java:317)
    at java.io.BufferedReader.readLine(BufferedReader.java:382)
    at chat.run(chat.java:76)
    at java.lang.Thread.run(Thread.java:722)

“在chat.run(chat.java:76)”是这一行:

System.out.println("[_in_"+(line=ins.readLine())+"_]");

line是一个字符串,而且是一个BufferedReader

ins = new BufferedReader(new InputStreamReader(_sock.getInputStream()));

_sock正在

Socket       _sock      = null;
_sock = serv_sock.accept();

这发生在我的服务器java而不是我的客户端java ... 此外,当我暂时不发送任何内容时会发生这种情况

----- ------ EDIT

我再试一次; 首先,它做了40分钟无所事事,它仍然有效, 然后我再等了40分钟,这次没用了。

似乎有点随意.. 我无法弄清楚是什么导致了它。

我拥有的文件 * [client.java],[chat.java],[vlc.java] * [server.java],[chat.java],[vlc.java]

虽然聊天不同,但两者的vlc文件是相同的 (因为我还没有在客户端和服务器上完成Threads)

这是代码;

   SERVER
server.java: pastebin.com/GH8ShcGp
chat.java  : pastebin.com/iaL23kSb
vlc.java   : pastebin.com/9kyrbh5q



    CLIENT
client.java: pastebin.com/HDK450Jg
chat.java  : pastebin.com/CfHrEUkE
vlc.java   : pastebin.com/SfZgYy58

我认为这是一个窗口/网络的事情。 有人请求帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:5)

我无法使用您的代码和localhost-connections在我自己的计算机上复制您的确切问题,但在阅读“BufferedReader.readLine()抛出java.net.SocketException之后:软件导致连接中止:recv失败”在几个不同的页面中,我相信这与您的网络有关。由于TCP超时或传输中的数据损坏,连接似乎终止。

如果这种情况发生在localhost-connections(同一台计算机中的服务器和客户端)上,则可能是内存故障,否则您可能在某处某处出现了损坏的网络,路由器或电缆。如果你使用无线技术,它们可能非常不可靠。

答案 1 :(得分:0)

此错误恰好由于网络问题而发生。当与数据库的连接失败并且应用程序无法检索所需数据时,它就会出现。问题可能出在连接线或调制解调器上。尝试更改它们。否则,请检查sql developer等中的数据库访问权限,如果其工作正常,则可能会出现事务超时问题。

答案 2 :(得分:-2)

有两种可能性:

  • 数据库已关闭,或
  • 数据库服务器的IP地址重复网络上现有服务器的IP地址