Ich schreibe einen XMLRPC-Client in C++, die zu einem Python XMLRPC-Server sprechen soll.
Leider ist der Python-XMLRPC-Server derzeit nur in der Lage, eine Anfrage pro Verbindung zu bearbeiten, dann wird er heruntergefahren. Ich entdeckte dies dank der Antwort von mhawke auf meine vorherige Anfrage zu einem verwandtes Thema
Aus diesem Grund muss ich jedes Mal, wenn ich eine XMLRPC-Anfrage stellen möchte, eine neue Socket-Verbindung zu meinem Python-Server herstellen. Dies bedeutet die Erstellung und Löschung einer Menge von Sockets. Alles funktioniert gut, bis ich mich ~4000 Anfragen nähere. An diesem Punkt erhalte ich Socket-Fehler 10048, Steckdose in Gebrauch .
Ich habe versucht, den Thread zu schlafen, damit Winsock seine Dateideskriptoren reparieren kann, ein Trick, der funktionierte, als ein Python-Client von mir ein identisches Problem hatte, aber ohne Erfolg. Ich habe Folgendes versucht
int err = setsockopt(s_,SOL_SOCKET,SO_REUSEADDR,(char*)TRUE,sizeof(BOOL));
ohne Erfolg.
Ich verwende Winsock 2.0, so WSADATA::iMaxSockets sollte nicht ins Spiel kommen, und so oder so, ich überprüft und seine auf 0 (ich nehme an, das bedeutet unendlich)
4000 Anfragen scheinen keine ungewöhnliche Anzahl von Anfragen zu sein, die während der Ausführung einer Anwendung gestellt werden. Gibt es eine Möglichkeit, SO_KEEPALIVE auf der Client-Seite zu verwenden, während der Server ständig geschlossen und neu geöffnet wird?
Übersehe ich da etwas?