回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在用c++编写一个XMLRPC客户机,它旨在与python XMLRPC服务器通信。</p>
<p>不幸的是,此时python XMLRPC服务器只能在一个连接上部署一个请求,然后它会关闭,我发现这要感谢mhawke对我之前关于<a href="https://stackoverflow.com/questions/1423251/talking-between-python-tcp-server-and-a-c-client">related subject</a>的查询的响应</p>
<p>因此,每次我想发出XMLRPC请求时,都必须创建到python服务器的新套接字连接。这意味着创建和删除许多套接字。一切正常,直到我接近4000个请求。此时,我得到套接字错误<a href="http://www.pscs.co.uk/helpdesk/vpop3help/vpop3/socket_error_10048.htm" rel="nofollow noreferrer">10048, Socket in use</a>。</p>
<p>我试着让线程休眠,让winsock修复它的文件描述符,当我的一个python客户机遇到相同的问题时,这个技巧奏效了,但没有用。
我已经试过了</p>
<pre><code>int err = setsockopt(s_,SOL_SOCKET,SO_REUSEADDR,(char*)TRUE,sizeof(BOOL));
</code></pre>
<p>没有成功。</p>
<p>我使用的是Winsock2.0,因此WSADATA::iMaxSockets不应该起作用,不管怎样,我检查了它并将其设置为0(我认为这意味着无穷大)</p>
<p>4000个请求看起来不像是在应用程序运行期间发出的奇怪请求数。当服务器持续关闭并重新打开时,是否有办法在客户端使用“保持”命令?</p>
<p>我完全错过什么了吗?</p>