Я пишу клиент XMLRPC в C++, который предназначен для общения с сервером XMLRPC на python.Ошибка использования сокета при повторном использовании сокетов
К сожалению, в это время, сервер питон XMLRPC способен только выставляя один запрос на соединение, то он выключается, я обнаружил это благодаря, чтобы mhawke ответ на мой предыдущий запрос о related subject
Из-за это, я должен создать новое подключение сокета к моему серверу python каждый раз, когда я хочу сделать запрос XMLRPC. Это означает создание и удаление множества сокетов. Все работает нормально, пока я не подхожу к ~ 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 на стороне клиента, пока сервер постоянно закрывается и снова открывается?
Я что-то не хватает?
да, после каждого запроса, я вызываю closesocket(). Я проверил, и это даже делает последний запрос до возникновения ошибки, поэтому сокет не остается открытым – DanJ