我正在用 c++ 编写一个 XMLRPC 客户端,旨在与 python XMLRPC 服务器通信。
不幸的是,此时,python XMLRPC 服务器只能在连接上处理一个请求,然后它会关闭,我发现这要归功于 mhawke 对我之前关于相关主题的查询的回复
因此,每次我想发出 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 吗?
我完全错过了什么吗?