web服务-如何在XMLRPC中处理多个连接
web services - How to handle multiple connections Abyss Server in XMLRPC - C++
场景如下:我有一个xmlrpc - c++应用程序,监听PORT=8081上的连接。它实现了一个深渊服务器,使用xmlrpc-c库如下:
xmlrpc_c::serverAbyss myAbyssServer(
myRegistry, //handler of methods
port, //8081
"xmlrpc_log"
);
当我从调用许多XMLRPC方法的脚本创建多个连接时,可以正常工作。脚本是这样的:Script1:rpc.method1(参数);rpc.method2(参数);
rpc.methodN(参数);如果我在执行此脚本时使用netstat和xmlrpc_log检查服务器中的连接,则输出类似XMLRPC-SERVER:8081 XMLRPC-CLIENT:SOME TIME_WAIT。虽然XMLRPC_CLIENT IP是相同的,但是非常rpc。方法调用它将创建一个新的连接。
当我在同一个客户端中执行两个脚本时,问题出现了。这意味着,在同一个客户端中,一个脚本中的rpc.methodM(参数)调用与另一个脚本中的rpc.methodN(参数)调用同时执行。这会导致服务器崩溃,并且XMLRPC-SERVER保持关闭状态,直到重新启动进程。
我读了Abyss帮助,runOnce()方法没有帮助。默认情况下,调用上面的构造函数,对于Abyss服务器,MaxConnections默认为30,timeout为15 segs。
是否有一些配置来避免这个崩溃?我需要同时支持多个客户端和多个连接。
谢谢你的帮助,
真诚,Luchux .
好吧。显然,服务器正在处理多个连接,并通过pthreads支持多线程。问题应该在我的代码中由RPC调用执行,我猜是因为可重入/线程安全问题。
- 在与其他项目一起工作了一段时间后,我回到了这个代码,问题是在一个自然语言库中,有一些不可重入的方法。他们解决了,我解决了:)-
相关文章:
- 某些 boost::asio 异步函数是否将处理程序连接到操作,以便处理程序被触发一次?
- 使用单个套接字处理多个传入的 UDP 连接
- 使用 QThreadPool 处理多个连接
- 如何通过解析缓冲区并将数据放入正确的结构来处理传入的数据包连接?
- 如何处理在 CPP 中连接到服务器的多个客户端?
- 多螺纹卷发同时处理多个连接
- boost::asio 允许非阻塞接受新连接,而连接的处理程序正在阻塞
- Qt的事件循环线程是安全的还是原子的?处理"队列连接"时如何同步?
- 如何使用 lamba 作为连接处理程序调用 boost async_connect 作为成员函数
- Qt-同时处理多个数据库连接
- 如何处理 KDE5 等离子体中第二个显示器的连接
- 如何在删除或处理文件夹树时处理符号链接和连接
- 处理客户端连接的最有效方法(套接字编程)
- 在Windows下处理多个客户端连接的最佳方法(不使用线程)
- 加速和 Windows 套接字 - 正确处理 TCP 客户端断开连接方案
- 处理"非阻塞"套接字连接
- Qt 错误:信号 QDeclarativeEngine::quit() 发出,但没有连接接收器来处理它
- 在没有连接的情况下调用C++Boost异步服务器处理程序
- MongoDB C++驱动程序处理副本集连接故障
- 处理连接对象时出现分段错误