gpt4 book ai didi

c++ - 如何在 XMLRPC 中处理多个连接深渊服务器 - C++

转载 作者:太空宇宙 更新时间:2023-11-04 14:22:09 25 4
gpt4 key购买 nike

场景是下一个:我有一个 XMLRPC-C++ 应用程序,监听 PORT=8081 上的连接。它实现了一个 Abyss 服务器,使用 xmlrpc-c 库如下:

xmlrpc_c::serverAbyss myAbyssServer(
myRegistry, //handler of methods
port, //8081
"xmlrpc_log"
);

当我从调用许多 XMLRPC 方法的脚本创建多个连接时,它工作正常。脚本是这样的: 脚本 1: rpc.method1(参数); rpc.method2(参数); rpc.methodN(参数);

如果我在执行此脚本时使用 netstat 和 xmlrpc_log 检查服务器中的连接,则输出类似于 XMLRPC-SERVER:8081 XMLRPC-CLIENT:SOME TIME_WAIT。尽管 XMLRPC_CLIENT IP 是相同的,但在调用 rpc.method 之前它会创建一个新连接。

当我在同一个客户端中执行两个这样的脚本时,问题就出现了。这意味着,在同一个客户端中,一个脚本中的 rpc.methodM(parameters) 调用与另一个脚本中的 rpc.methodN(parameters) 同时执行。这会导致服务器崩溃,并且 XMLRPC-SERVER 会一直停机直到进程重新启动。

我看了Abyss的帮助,runOnce()方法没有帮助。默认情况下,如上调用构造函数,Abyss 服务器的 MaxConnections 默认为 30,超时 15 段。

是否有一些配置可以避免这种崩溃?我将需要同时支持多个客户端和多个连接。

感谢与此相关的任何帮助,

真诚的,卢修斯。

最佳答案

嗯。显然,服务器正在处理多个连接并支持使用 pthreads 的多线程。问题应该出在我的 RPC 调用执行的代码中,我猜是因为可重入/线程安全问题。

  • 在与其他项目打交道后,我回到这段代码,发现问题出在自然语言库中,有一些不可重入的方法。他们解决了,我也解决了 :) -

关于c++ - 如何在 XMLRPC 中处理多个连接深渊服务器 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6649802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com