我已经构建了一个Java Socket服务器,它可以监听我的freebsd服务器上的帖子。
Server类侦听端口,并接受连接。
每个新连接都被发送到ServerManager,并将其保存在列表中,并迭代它以检查新数据。迭代是通过无穷大while loop
完成的。
我注意到运行服务器几天后就被杀死了。我不知道是什么杀了它。 系统是否有可能将其杀死,就像Android在内存和资源不足时进行处理一样? 有办法避免这种情况吗?也许创建某种“看门狗”来重新启动它以防它被杀?
答案 0 :(得分:0)
如果getInputStream()。available()> 0它运行一个新线程来处理它
这不正确。 (a)没有必要和(b)如果为零会发生什么?只是为接受的套接字生成线程,让它处理输入流,使用阻塞读取,并在完成时关闭所有内容(即当read()返回-1或抛出异常时)。
接受循环根本不应对接受的套接字执行任何操作,除非将其传递给新线程。