TCP/IP Listener Thread
-
Hey Ihr,
Ich habe ohne Probleme einen Server und einen Clienten für TCP/IP Kommunikation mittels Winsocks schreiben können. Aber leider bin ich jetzt etwas stuck was "threading" betrifft. Ich hätte gerne das mein Programmfluss beim clienten nicht stecken bleibt beim auf Verbindungen warten. Gibt es ne möglichkeit, den Listener quasi in nem extra Thread zu starten?
Gruß,
Ramon
-
Bin mittlerweile auf fork() gestoßen. Werde es mal damit probieren, wenn mir jemand davon abraten möchte oder bessere alternativen kennt gerne her damit
-
Fork scheint bei windows nicht zu funktionieren... zu schade.. Wie gesagt wenn jemand mir weiterhelfen könnte wäre ich sehr dankbar
-
Du kannst den Listen-Socket erstellen:
listen(ListenSocket, SOMAXCONN);
und dann einen Thread starten:
_beginthread(MyListenThread, 0, &ListenSocket);
der ungefähr so aussehen könnte:
void MyListenThread (void * Param) { SOCKET ListenSocket, TmpSocket; ListenSocket = *(SOCKET *) Param; while (!ProgrammEnde) { sockaddr_in ClientSocketAddr; int ClientSocketAddrLength = sizeof(sockaddr_in); sockaddr *sa_ptr = (sockaddr*) &ClientSocketAddr; TmpSocket = accept(ListenSocket, sa_ptr, &ClientSocketAddrLength); ... mach was mit dem Client ... } }
-
Schöner weil u.U. schneller aber auf jeden Fall portabler ist select.