Ошибка использования сокета при повторном использовании сокетов
Я пишу клиент XMLRPC на C ++, который предназначен для общения с сервером Python XMLRPC.
К сожалению, в настоящее время сервер Python XMLRPC может отправлять только один запрос на соединение, затем он отключается, я обнаружил это благодаря mhawke 'ответ на мой предыдущий запрос освязанный предмет
Из-за этого мне приходится создавать новое сокет-соединение с моим сервером Python каждый раз, когда я хочу сделать запрос XMLRPC. Это означает создание и удаление множества сокетов. Все отлично работает, пока не подойду ~ 4000 запросов. В этот момент я получаю ошибку сокета10048, гнездо в использовании.
мы пытались перевести поток в режим ожидания, чтобы позволить winsock исправить свои файловые дескрипторы, - хитрость, которая работала, когда у моего клиента Python была идентичная проблема, но безрезультатно. Я'мы пробовали следующее
int err = setsockopt(s_,SOL_SOCKET,SO_REUSEADDR,(char*)TRUE,sizeof(BOOL));
без успеха.
я использую winsock 2.0, поэтому WSADATA :: iMaxSockets не долженне вступил в игру, и в любом случае, я проверил, и его значение установлено в 0 (я предполагаю, что это означает бесконечность)
4000 запросов неНе похоже на невероятное количество запросов, сделанных во время работы приложения. Есть ли какой-нибудь способ использовать SO_KEEPALIVE на стороне клиента, пока сервер постоянно закрывается и снова открывается?
Я что-то пропустил?