Windows Sockets und CreateThread



  • Ich weiß das Thema wurde schon zig mal diskutiert, aber in allen Beiträgen habe ich keine Lösung zu meinem Problem gefunden.
    Ich habe mir einen Client und einen Server programmiert. Der Server soll bis zu 255 Clients gleichzeitig bearbeiten können. Also dachte ich mir müssen Threads her. Der Server benutzt die normalen Windows Socket Funktionen(bind, accept, select, ...)

    Ich habe mir im Server 3 Funktionen geschrieben, die erste öffnet den Server und bringt ihn in den listen Modus. Die zweite bearbeitet ankommende Nachrichten und sendet eine Antwort, die dritte Schließt die Server Verbindung.

    Wo sollen die einzelnen Threads beginnen? Bei select() oder accept()...?
    Was ist besser? CreateThread ode _beginnthread ?
    Wo sollen die Threads enden?
    Was muss ich (im Falle von CreateThread) für eine Threadfunktion übergeben?
    Hab schon gestern gegoogelt aber CreateThread nicht ganz verstanden.



  • Mir geht es speziell um die Funktion die ich dem CreateThread übergebe, diese Funktion gibt mir ein DWORD zurück, muss das so sein, die Funktion die ich da nutzen möchte gibt mir bei Fehler FALSE zurück und bei Erfolg TRUE. kann ich das in der Threadfunc auch realisieren? 2 tens muss ich der Threadfunc einen Parameter übergeben (PVOID pParam) was erwartet die Funktion hier als Parameter?



  • Nachdem du die Funktion ja selber schreibst, kannst du dir ja aussuchen, was du als Argument übergibst (meistens ist es einfach ein Pointer auf eine struct). In diesem Fall: Aufpassen, dass du die struct nicht wegräumst, noch bevor sie ausgelesen wurde.

    Der Thread wird immer erzeugt, nachdem accept erfolgreich zurückgekehrt ist.



  • Ich habe jetzt aber eine Funkion genommen der ursprünglich nix übergeben wurde, muss ich ihr unbedingt was übergeben? Wenn ja was ist wenn ich das auf 0 setzte?

    Sollte immer accept einen Thread starten?




Log in to reply