我在Java中使用ServerSocket
和ObjectOuputStream
將我的項目的一些對象從客戶端傳輸到服務器。我知道Java中的ServerSocket
類使用TCP,因此不應丟棄數據包,但如果客戶端在傳輸對象時崩潰,會發生什麼情況?我是否需要自己處理這個問題,還是Java會認識到通過流傳入的對象不完整?在對象傳輸過程中Java ServerSocket中斷時會發生什麼?
1
A
回答
2
根據連接被切斷的方式,您可能會在服務器上出現幾個例外之一。您的服務器可能會發出異常,如Connection reset by peer
。是的,您的容器可以識別連接沒有正確終止。你的容器拋出的異常將表明這一點。
請注意,有些情況下客戶端可能會完全傳輸您的對象,但服務器可能仍然無法獲取它。位於兩者之間的負載平衡器可能會因不明原因斷開連接。也考慮這些情況。
0
ServerSocket不會中斷。發送到Socket的數據被中斷。根據失敗模式,ObjectInputStream.readObject()方法將引發IOException或永遠阻塞。爲了避免後者,請在Socket上設置讀取超時。然後它會拋出一個SocketTimeoutException。
相關問題
- 1. 在java中打印對象時會發生什麼
- 2. 中斷HTTP流時會發生什麼?
- 3. 在反序列化過程中對象會發生什麼?
- 4. 在Qt中,線程完成時對象會發生什麼?
- 5. 發生中斷時,x86架構中會發生什麼?
- 6. 當我切換wifi網絡時,TCP/UDP serversocket會發生什麼?
- 7. 在.NET中投射對象時會發生什麼變化?
- 8. 當我在Hibernate中合併對象時會發生什麼?
- 9. 當我在C++中爲對象賦值時,會發生什麼?
- 10. 如果CRC除數在傳輸過程中被破壞會發生什麼?
- 11. 當InetAddress更改時,ServerSocket會發生什麼?
- 12. 在Java中實例化對象時發生了什麼?
- 13. 如果HttpClient.execute()中斷會發生什麼?
- 14. 在Spring中通過遠程傳輸傳遞Java對象XD
- 15. Tomcat:HTTP Multipart請求被中斷時會發生什麼?
- 16. 客戶正在執行時發生中斷時會發生什麼?
- 17. 文件上傳過程中會發生什麼?
- 18. 傳遞給MySQL過程時會發生什麼?
- 19. 爲什麼在cin中斷時會發生變化? C++
- 20. 先發中斷處理程序會發生什麼?
- 21. 從Java調用Oracle過程 - 調用System.exit()時會發生什麼?
- 22. 當JVM退出時,堆中的對象會發生什麼?
- 23. 對象引用在哪裏存在,當通過引用傳遞對象引用時會發生什麼?
- 24. 這個對象會發生什麼
- 25. 更新過程中孤立存儲器存儲對象會發生什麼
- 26. 當您產生activerecord對象時會發生什麼?
- 27. 在測試中創建的模型對象會發生什麼?
- 28. 我在Ruby中分配給$ stdout的對象會發生什麼?
- 29. 當一個線程在wait()上阻塞時被中斷會發生什麼?
- 30. 當sqlite3 db寫入被中斷時會發生什麼?
如果你的服務器讀取一個客戶端的* InputStream *並且客戶端消失,那麼你會得到一個早熟的* EOF *,一個* IOException *或一個掛起的連接(我不確定哪一個,但你應該預料到哪一個) 。只有當你的客戶有告訴服務器的方法時,才能檢測到早期* EOF * *好的,我完成了*。如果您在從客戶端接收數據時收到* IOException *,應該放棄連接並在適當的地方記錄錯誤。掛起的連接可以使用超時處理([這裏有一篇關於此的好帖子](http://stackoverflow.com/q/804951/433835))。 –