摘要:創建好之后,還會先向流中先寫入個字節的數據,創建的時候會相應的將其讀出來,所以,不能多次創建,因為這會導致多次寫入數據,
在socket編程中,如果在一個while循環中使用:
ObjectInputStream reader = new ObjectInputStream(socket.getInputStream); reader.readObject();
可能會出現EOFException,
看了網上的很多答案和解釋,覺得都不對,網上都說是因為已經到達文件末尾了,而reader還在讀取數據,所以在報錯
其實,這是不對的,在循環中調用它本沒有錯,在while循環中如果沒有數據可讀了,它會自動阻塞,有數據來的時候就會讀,所以在這種情況下根本不會出現
到達文件末尾了,而reader還在讀
的問題,那么出現這種情況的原因是什么呢?
其實是代碼業務邏輯的問題,導致reader在讀的時候,socket被關閉,reader被關閉,連接被關閉等等,所以完全是代碼設計的問題,
另外在使用ObjectOutputStream和ObjectInputStream的時候要注意一個問題,這兩者創建的順序需要遵循一定的約定,ObjectInputStream的創建需要ObjectOutputStream創建后的一些數據,所以它一般在ObjectOutputStream之前。創建好ObjectOutputStream之后,還會先向流中先寫入4個字節的數據,創建ObjectInputStream的時候會相應的將其讀出來,所以,不能多次創建ObjectOutputStream,因為這會導致多次寫入數據,
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64742.html
摘要:前端小白最近面試幾家公司,寫點面經分享給大家,同時記錄下自己的缺點以供后期補足,各個公司的開發方向不同,請各位理性看待。直接現場手敲觸發的樣式。數組去重如何實現如果用的話,里面如何寫排序算法。對象何時被修改心態需要調整好,不緊張不匆忙。 前端小白最近面試幾家公司,寫點面經分享給大家,同時記錄下自己的缺點以供后期補足,各個公司的開發方向不同,請各位理性看待。 問題相關 Css 布局方式有...
閱讀 3576·2023-04-26 02:10
閱讀 1328·2021-11-22 15:25
閱讀 1680·2021-09-22 10:02
閱讀 916·2021-09-06 15:02
閱讀 3478·2019-08-30 15:55
閱讀 610·2019-08-30 13:58
閱讀 2785·2019-08-30 12:53
閱讀 3063·2019-08-29 12:38