1

我已经构建了一个 Java Socket 服务器,它在我的 freebsd 服务器上收听帖子。

Server 类监听一个端口,并接受连接。每个新连接都被发送到 ServerManager,后者将其保存在列表中,并遍历它以检查新数据。迭代是通过无穷大完成的while loop

我注意到在运行几天后服务器已被杀死。我不知道是什么杀死了它。系统是否有可能杀死它,就像Android在内存和资源不足时对进程所做的那样?有没有办法避免这种情况?也许创建某种“看门狗”来重新启动它,以防它被杀死?

4

1 回答 1

0

如果 getInputStream().available() > 0 它运行一个新线程来处理它

这是不正确的。(a)没有必要,(b)如果它为零会发生什么?只需为接受的套接字生成线程,让它处理输入流,使用阻塞读取,并在它完成时关闭所有内容(即当 read() 返回 -1 或抛出异常时)。

接受循环根本不应该对接受的套接字做任何事情,除非将它传递给新线程。

于 2012-09-27T00:34:41.223 回答