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