我正在處理有關SMPP協議的項目。它無限地監聽服務器並接受套接字。接收套接字後,它會創建一個處理程序,它接收數據並根據SMPP協議對其進行處理。經過一段時間(1或2周)後,它停止接收插座。它不會拋出任何異常,只是等待在線*。我不知道有什麼問題,我該如何解決。注意套接字數不超過30個。所以我們沒有關於活套接字數限制的問題。 並注意創建之前的其他套接字是活着的並且正在工作.App從這些套接字接收數據並進行處理:接收短信並從這些套接字發送短信。重新啓動應用程序後,它正在工作。我認爲這不是解決方案。接收Socket在某個時間後突然停止
private void process() {
try {
//line *.waiting for receiving new socket. Problem is on this point
Socket socket = serverSocket.accept();
//creating a handler that recieve data and process it according to SMPP protocol
StandardConnectionHandler sch = new StandardConnectionHandler(socket);
new Thread(sch).start();
smsc.getConnectionHandlers().add(sch);
} catch (Exception ex) {
logger.log(Level.SEVERE, "exception in accepting a connection", ex);
} finally {
process();//if it is done.recieved a new socket call back again
//it is infinite recursive procedure
}
}
好吧,1-2周我認爲它的正常行爲。那麼一些'看門狗',關閉時應該再次啓動套接字的服務呢? –
套接字沒有關閉它正在工作。我注意到,所有創建之前的套接字都活着並且正在工作。如果套接字已關閉,則連接到應用程序的所有客戶端也必須關閉。問題是接收新的套接字。它只是在等待爲它。沒有例外沒有錯誤 – Sarkhan
@MaximShoustin我寫了我的最新評論。請閱讀它。沒有任何關閉,關閉問題 – Sarkhan