我正致力于SMPP协议的项目工作。它无限地监听服务器并接受套接字。接收套接字后,它创建一个处理程序,接收数据并根据SMPP协议对其进行处理。经过一段时间(1或2周)后,它停止接收插座。它不会抛出任何异常,只是在线等待*。我不知道是什么问题,我该如何解决它。请注意,套接字计数不超过30.所以我们没有关于活动套接字计数限制的问题。 并注意创建之前的其他套接字是活动的并且正在工作.App从这些套接字和进程接收数据:接收sms-es并从这些套接字发送sms-es。重新启动应用程序后它正在运行。我认为这不是解决方案。
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
}
}
答案 0 :(得分:-1)
您没有发布完整代码和服务器套接字初始化。尽管如此,我认为您的问题可能与您没有正确关闭所有流有关。