Zuerst bindest du die Windows API ein.
#include <windows.h>
Die client_handler Funktion schreibst du so um.
DWORD WINAPI client_handler(LPVOID lpParam) {
SOCKET clientSocket = (SOCKET)lpParam;
send(clientSocket, "Hello from server!", sizeof("Hello from server!"), 0);
closesocket(clientSocket);
return NULL;
}
Und im Mainloop ersetzt du die Schleife folgendermaßen.
while (1) {
SOCKET clientSocket;
struct sockaddr_in clientAddr;
int clientAddrLen = sizeof(clientAddr);
clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddr, &clientAddrLen);
// Starten Sie einen neuen Thread für diesen Client
DWORD threadId;
HANDLE threadHandle = CreateThread(NULL, 0, client_handler, (LPVOID)clientSocket, 0, &threadId);
if (threadHandle == NULL) {
perror("CreateThread");
return 1; // Fehler beim Erstellen des Threads
}
// Schließen Sie den Thread-Handle, da wir es nicht mehr benötigen (der Thread läuft jetzt selbstständig)
CloseHandle(threadHandle);
}