我已经构建了一个简单的 Java 程序,它在本地用作服务器。
目前它做了一些事情,例如预览目录,如果目录包含它,则转发到 index.html,发送 Last-Modified
header 并正确响应客户端的 If-Modifed-Since
要求。
我现在需要做的是让我的程序接受持久连接。目前它是线程化的,因此每个连接都有自己的线程。我想将我的整个线程代码放在一个循环中,该循环一直持续到 Connection: close
,或指定的超时。
有人知道从哪里开始吗?
编辑:这是一个大学项目,必须在不使用框架的情况下完成。
我有一个 main 方法,它无限循环,每次循环它都会创建一个 Socket 对象,一个 HTTPThread
然后创建对象(我自己创建的一个类) - 处理单个请求。
我想使用 Connection: keep-alive
允许多个请求在单个连接中工作请求 header 。我希望在我的 HTTPThread
中使用循环类,我只是不确定如何传递多个请求。
提前致谢 :)
最佳答案
我假设您从 Socket API 开始自己实现 HTTP 协议(protocol)代码。并且您正在实现 HTTP 规范的持久连接部分。
您可以按照您的建议将代码放入循环中,并使用 Socket.setSoTimeout 设置阻塞操作的超时,从而设置您的 HTTP 超时。你不需要做任何事情来重用你的连接流......除了不关闭它们。
我要指出,实现 Web 服务器的方法要简单得多。有许多现有的 Java Web 服务器框架和应用程序服务器,或者您可以重新利用 Apache HTTP 协议(protocol)栈。
关于java - 保持来自自制 Java 服务器的持久连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8066718/