Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一段时间后,接收插座突然停止_Java_Sockets_Tcp - Fatal编程技术网

Java 一段时间后,接收插座突然停止

Java 一段时间后,接收插座突然停止,java,sockets,tcp,Java,Sockets,Tcp,我正在从事SMPP协议的项目工作。它无限地侦听服务器并接受套接字。接收套接字后,它创建一个处理程序,该处理程序接收数据并根据SMPP协议进行处理。经过一段时间(1或2周),它停止接收插座。它不会抛出任何异常,只是在排队等待*。我不知道问题出在哪里,我怎样才能解决它。请注意,套接字计数不超过30。所以我们没有关于活动套接字计数限制的问题。 请注意,创建之前的其他套接字都处于活动状态且正在工作。应用程序从这些套接字接收数据并处理:从这些套接字接收sms es和发送sms es。重新启动应用程序后,它

我正在从事SMPP协议的项目工作。它无限地侦听服务器并接受套接字。接收套接字后,它创建一个处理程序,该处理程序接收数据并根据SMPP协议进行处理。经过一段时间(1或2周),它停止接收插座。它不会抛出任何异常,只是在排队等待*。我不知道问题出在哪里,我怎样才能解决它。请注意,套接字计数不超过30。所以我们没有关于活动套接字计数限制的问题。 请注意,创建之前的其他套接字都处于活动状态且正在工作。应用程序从这些套接字接收数据并处理:从这些套接字接收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
    }
}

您没有发布完整的代码和服务器套接字初始化。尽管如此,我认为您的问题可能与未正确关闭所有流有关。

嗯,我认为1-2周是正常行为。一些看门狗怎么样,应该在关闭时再次启动套接字的服务?套接字没有关闭它正在工作。我注意到创建之前的所有套接字都处于活动状态并且正在工作。如果套接字已关闭,则连接到应用的所有客户端也必须关闭。问题是接收新套接字。它只是在等待。没有异常否error@MaximShoustin我在上一篇文章中写道评论。请阅读。没有任何关闭、关闭问题。发生这种情况时,您的新客户会出现什么症状,服务器运行在什么平台上?我经常调试所有套接字,每个客户端都有一次连接的权限。我再次注意到没有错误。在这种情况下,你说我应该得到一个错误。递归调用有什么原因吗?或者你能切换到标准调用吗cycle@user2430343然而,你的回答无法解释一个障碍
accept()
@EJP我没有得到stackoverflow。因为accept()方法等待新套接字。所以process()方法不会在不等待的情况下递归调用。我注意到我没有得到任何结果,只有一个exception@Serkhan要获得堆栈溢出,需要数千或数百万次递归,但它肯定会在某个时候发生。没有人认为这是你当前问题的原因。如果是的话,我们想你会提到的。你还没有回答我的问题。