java - 保持来自自制 Java 服务器的持久连接

标签 java persistent

我构建了一个简单的 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/

相关文章:

android - 您如何根据首选项创建开始时间和结束时间时间选择器?

java - 默认变量的值与默认初始化

Java-如何从同一个包中的类获取私有(private)数据

存在 Java 8 lambda 表达式

java - 尝试返回 null 时出现 NPE

php - Redis PHP session 不会持续存在

java - java中字符串的不区分大小写的 HashMap

sql - 有没有强力支持SQL数据库来持久化rabbitmq消息

c# - 如何删除在 asp.net 中动态创建的文本框?

java - Android 上的持久 HttpURLConnections