C++ Winsock error 10093

Ich versuche zu bauen, ein server in C++ kann die multiple Anzahl von clients. Zu diesem Zweck baute ich eine winsock-wrapper und verwenden von threading mit boost für die Kommunikation für jeden Kunden.
Stieß ich auf ein seltsames problem beim Versuch, zu akzeptieren, Kunden, habe ich eine Schleife, die wie folgt aussieht.

int clientID = 0;
listenSocket = new Socket(SocketType::TCP);
listenSocket->Bind(port);
listenSocket->Listen();

while(running)
{
    Socket *socket = &listenSocket->Accept();
    mutex.lock();
    clients.push_back(new Client(socket,  clientID));
    mutex.unlock();

    std::cout << "Client with id " << clientID << " connected!" << std::endl;

    std::cout << WSAGetLastError() << std::endl;

    clientID++;
}

Nun, der erste Kunde akzeptiert Geldstrafe und die WSAGetLastError() gibt 0 zurück, aber nach der ersten verbunden, auch wenn ich nicht versuchen, eine andere es einfach weiter zu schreiben in der Konsole 10093, was bedeutet, dass der Accept() in der Schleife stoppped Sperrung und für einige Grund nicht akzeptieren, richtig. Ich habe online gelesen, dass diesen Fehler verursacht, nicht durch Aufruf von WSAStartup () - aber ich Tat heißt es in der socket-Konstruktor und es Tat akzeptieren in der ersten Zeit.

Sind Sie möglicherweise aufrufen WSACleanup irgendwo, wie in einem Destruktor?

InformationsquelleAutor UnTraDe | 2013-05-10

Schreibe einen Kommentar