Error de socket en uso al reutilizar sockets

Estoy escribiendo un cliente XMLRPC en c ++ que está destinado a comunicarse con un servidor XMLRPC de Python.

Desafortunadamente, en este momento, el servidor XMLRPC de Python solo es capaz de enviar una solicitud a una conexión, luego se apaga, descubrí esto gracias a la respuesta de mhawke a mi consulta anterior sobre unatema relacionado

Debido a esto, tengo que crear una nueva conexión de socket a mi servidor Python cada vez que quiera hacer una solicitud XMLRPC. Esto significa la creación y eliminación de muchos sockets. Todo funciona bien, hasta que me acerque a unas 4000 peticiones. En este punto me sale error de socket10048, zócalo en uso.

He intentado ponerle hilo al hilo para que winsock corrija sus descriptores de archivos, un truco que funcionó cuando un cliente Python mío tuvo un problema idéntico, sin éxito. He intentado lo siguiente

int err = setsockopt(s_,SOL_SOCKET,SO_REUSEADDR,(char*)TRUE,sizeof(BOOL));

sin éxito

Estoy usando winsock 2.0, por lo que WSADATA :: iMaxSockets no debería entrar en juego, y de cualquier manera, lo verifiqué y se estableció en 0 (supongo que eso significa infinito)

Las 4000 solicitudes no parecen ser un número extravagante de solicitudes durante la ejecución de una aplicación. ¿Hay alguna forma de usar SO_KEEPALIVE en el lado del cliente mientras el servidor se cierra y se vuelve a abrir continuamente?

¿Estoy totalmente perdiendo algo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta