我正在用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?
我是不是完全忽略了什么?