Programmazione client/server di rete, proprio quello che sto studiando ora in uni
Secondo me la soluzione migliore è creare un server concorrente (processo principale in ascolto che accetta connesioni e i figli che gestiscono la comunicazione con i client). per sapere quando c'è qualcosa su uno o piu socket puoi usare la select che pero non so se esiste su windows.
ciao