du verwendest die Sockets im Blocking-Mode, sprich:
Thread startet, listen macht Port auf, accept blockiert, bis eine Connection eingeht, danach blockiert recv, bis das erste
TCP-Segment eintrifft, danach wieder accept, welches aber blockiert, bis eine Connection eingeht, danach blo.... while true do ;
entweder lässt du einen Thread als Listener laufen, der dann pro akzeptierter Connection einen weiteren Thread spawned...
oder du betreibst die Sockets im Non-Blocking-Mode.... mehr dazu in der WinSock-Referenz (Stichworte: select / ioctlsocket)