0

我想做的是一个简单地回答客户请求的网络服务器。我可以使用 PHP 脚本、用 C++ 编写的可执行文件或用 Java 编写的服务来创建响应,但问题是它们总是必须加载来自客户端的每个请求,这会降低效率并需要我保存数据在某些文件或数据库中在请求之间交换它们(不能使用会话,在各种客户端之间交换数据)。

所以我正在寻找一些可以在服务器上连续运行的脚本,“监听”传入的请求,产生一个答案并将其发回。有用但不是必需的功能是:
- 基于 C/C++,但不必
- 能够处理 http,因为客户端是发送 JSON 的网站
- 可以很容易地与某些服务器解决方案一起使用

我的想法就像让一个 C++ 程序持续运行,维护 CPU 中的所有信息并与小程序共享它的内存,这将在每个请求到来时启动,从共享内存中获取数据并进行一些处理以创建答案(无需大量计算,可多次加载)。听起来是不是有点可能?

将一些技术工作命名为检查就足够了,谢谢你,Martin C.

4

1 回答 1

0

我不知道为什么你认为你不能用 java servlet 做到这一点,但你错了。或者我不明白你想做什么。

Servlet 有一种init()方法,您可以使用该方法在应用程序服务器启动时初始化数据。然后,所有请求都可以访问此数据,例如:

@WebServlet(urlPatterns="/somePath", loadOnStartup=1)
public class MyServlet extends HttpServlet {
    private Object sharedData;

    @Override
    public void init() throws ServletException {
        sharedData = <Your code to load data>
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println(sharedData); // This is just an example of using sharedData
        ...
    }
}

请注意,servlet 只有一个实例,因此数据只会加载一次,并且同一个 servlet 实例将服务于所有请求(具有多个线程)。

如果请求也可以修改共享数据,则必须小心保持代码线程安全。但是,如果您只是阅读它,那将非常简单。

于 2014-09-16T23:54:50.603 回答