這是我傻不轉儲卡住跟蹤捕獲的同時從socket.accept IOException異常(),並關閉線程做接受...有固定的這個問題,我還是想知道如何處理這種情況時,這個叫barfs。爲什麼java服務器套接字接受失敗?
我的應用程序是一個經典的套接字服務器接受數百個客戶端,有時數千個。接受線程始終在accept()調用中啓動並阻塞。一旦被接受,單獨的線程就會啓動以執行這些工作等等。沒什麼特別的。
問題是,accept()失敗時應該做什麼?這應該立即被視爲永久失敗嗎?我是否應該重試進入接受()一段時間,並試圖通過?最佳做法是什麼?而拋出IOException的原因通常是什麼?
直到你給我們提供了錯誤信息/異常,這纔是真正的問題。 '套接字關閉','超出緩衝區空間'以及'超出文件描述符'這些讓人想起來的候選人,每種情況下都有明顯的解釋:沒有別的。 – EJP 2012-07-08 10:07:26
如果我有堆棧跟蹤,首先不會有任何問題。這就是現實。 – Dima 2012-07-08 10:32:37
另外,我認爲這個問題會延續 - 我懷疑接受失敗,因爲linux盒子裏的文件句柄已經用完了。這會引發另外一個問題 - 我應該關閉服務器還是一直試圖希望操作系統能夠找到一些手柄來接受連接... – Dima 2012-07-08 10:34:43