異常: Software caused connection abort: socket write error

來源:互聯網
上載者:User

java.sql.SQLException: Io 異常: Software caused connection abort: socket write error

 

 

今天寫了一個廣播程式,用java測試的時候沒有什麼問題,但是用flash的用戶端測試點時候就報下面的錯誤,想了很長時間也找不出問題的原因。 原來是flash軟體在測試的時候不像java用戶端一樣,每開啟一個新的用戶端串連的時候就自動建立一個新的線程。flash是每重新啟動一個新的用戶端的串連的時候就會把上次啟動的用戶端的串連給關閉,也就是說在將上次的socket關掉。這樣java伺服器在向用戶端發送資訊的時候,用戶端的串連已經關掉,所以自然就無法接收該資訊,導致java提示“connection abort”錯誤,進而也就無法進行寫操作了。所以這個異常出現的原因就是用戶端非正常關閉,或者是由於網路的問題使用者掉線,而產生該異常,因此在java伺服器端就應該即時的檢測用戶端的串連狀況,無論是什麼原因導致使用者掉線,都要將該使用者從使用者線上列表中刪除,否則伺服器就無法正常工作,嚴重的時候可能導致伺服器的因為阻塞而死掉,這是應該注意到問題。

 

解決該問題的最好辦法就是時時檢測線上使用者的串連情況,一旦發現用串連出現問題,立即強制該使用者推出線上使用者列表,也即將其刪除出要廣播的使用者隊列中。這樣就可以保證在伺服器廣播的時候不會由於使用者的非正常退出而導致伺服器端出現工作的異常。

 

下面是該異常的詳細資料:

java.sql.SQLException: Io 異常: Software caused connection abort: socket write error:

java.net.SocketException: Software caused connection abort: socket write error

       at java.net.SocketOutputStream.socketWrite0(Native Method)

       at java.net.SocketOutputStream.socketWrite(Unknown Source)

       at java.net.SocketOutputStream.write(Unknown Source)

       at com.toplx.game.server.SendMessage.sendObject(SendMessage.java:40)

       at com.toplx.game.server.BroadcastMsg.sendMsgToAll(BroadcastMsg.java:42)

       at com.toplx.game.server.GameThread.run(GameThread.java:53)

       at java.lang.Thread.run(Unknown Source)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.