2012-01-27 135 views
4

完整的錯誤是:Java錯誤 - 軟件導致連接中止:recv的失敗

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())+"_]"); 

線作爲一個字符串和插件是一個BufferedReader

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

_sock是

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

這happends我的Java服務器,而不是我的客戶端的Java ... 此外,這happends當我不爲一點發送任何東西,而

-----編輯------

我又試了一次; 首先它去40分鐘什麼都不做的,它仍然工作, 然後我又等了40分鐘,這一次它沒有工作。

這似乎是一種隨機.. 我想不出什麼導致它。

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

的VLC文件是相同的兩個雖然聊天不同 (因爲我沒有帶在客戶端和服務器沒有完成線程)

下面的代碼;

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 

我認爲這是一個窗口/網絡的事情。 有人誰可以幫助我解決這個問題?

+1

的可能重複[java.net .SocketException:軟件導致連接中止:recv failed](http://stackoverflow.com/questions/135919/java-net-socketexception-software-caused-connection-abort-recv-failed) – dogbane 2012-01-27 15:35:03

+0

...並且'ins'是一個什麼流的BufferedReader,究竟是什麼?你應該發佈更多的信息 – 2012-01-27 15:36:22

+0

添加更多信息給我的問題 – user1021085 2012-01-27 22:01:17

回答

5

我無法在自己的計算機上使用代碼和localhost連接複製確切的問題,但在閱讀「BufferedReader.readLine()拋出java.net.SocketException:軟件導致連接中止:recv失敗「在幾個不同的頁面中,我認爲這與你的網絡有關。由於TCP超時或傳輸中的數據損壞,連接似乎被終止。

如果這種情況發生在本地主機的連接(服務器和客戶端在同一臺計算機上),它可能是一個錯誤的記憶,否則你可能有沿線某處破網卡,路由器或電纜。如果你使用無線,他們可能會非常不可靠。

+0

已在此問題中添加更多信息 – user1021085 2012-01-27 21:52:53

+0

我編輯了答案 – esaj 2012-01-28 09:13:03

+1

您修改了代碼(它從屬性文件中獲取端口#等)並打開了2個vlcs並進入工具 - >首選項 - >顯示設置:所有 - >接口 - >主界面 - > rc - >檢查「不要打開DOS ..」並在「tcp命令輸入中輸入127.0.0.1:PORT_YOU_SET_IN_vlc.java 「? (在服務器和客戶端中選擇了不同的端口,並在tcp-command-input窗口中相應地更改) - 如果你這樣做了,它會暫停並播放 - 是否暫停並讓它靜坐一段時間?嘗試30分鐘以上,然後看看它是否會給你帶來錯誤。在等待x分鐘時做其他的事情。嘗試1-3次。 – user1021085 2012-01-28 13:19:42

0

此錯誤發生時正是由於網絡問題。它與您的數據庫連接失敗並且應用程序無法檢索所需的數據。問題可能出在您的連接線或調制解調器上。嘗試改變它們。否則檢查你的數據庫訪問在SQL開發人員等工作正常,可能會在事務超時問題。

-2

有兩種可能性:

  • 數據庫已關閉,或
  • 數據庫服務器的IP地址,在網絡上覆制現有服務器的IP地址
相關問題