【发布时间】:2023-03-08 18:05:01
【问题描述】:
我正在用 c++ 编写一个 XMLRPC 客户端,旨在与 python XMLRPC 服务器通信。
不幸的是,此时,python XMLRPC 服务器只能在连接上处理一个请求,然后它就关闭了,我发现这要感谢 mhawke 对我之前关于 related subject 的查询的回复
因此,每次我想发出 XMLRPC 请求时,我都必须创建一个到我的 python 服务器的新套接字连接。这意味着创建和删除大量套接字。一切正常,直到我接近 4000 个请求。此时我收到套接字错误10048, Socket in use。
我尝试让线程休眠以让 winsock 修复其文件描述符,当我的 python 客户端遇到相同问题时,这个技巧有效,但无济于事。 我已经尝试了以下
int err = setsockopt(s_,SOL_SOCKET,SO_REUSEADDR,(char*)TRUE,sizeof(BOOL));
没有成功。
我使用的是 winsock 2.0,所以 WSADATA::iMaxSockets 不应该发挥作用,无论哪种方式,我检查并将其设置为 0(我假设这意味着无穷大)
4000 个请求在应用程序运行期间发出的请求数量似乎并不多。有没有办法在服务器不断关闭和重新打开时在客户端使用 SO_KEEPALIVE?
我是不是完全错过了什么?
【问题讨论】:
标签: c++ python sockets xml-rpc