Zatím to mám takto:
Objekt Service - jako služba. V tom je hlavní smyčka. Naslouchá se na určité adrese a portu. Jak dojde nějaký request od klienta, vytvoří se nové vlákno, nová instance objektu Client a je mu předán paket. Pak znovu čeká na další request. Instancí Service může být víc, pokud má server běžet na více rozhraních.
Objekt Client - vytvoří nový socket na jiném portu a ve smyčce přes něj obsluhuje klienta. K tomu obsahuje různé metody na parsování zprávy.
Pak jsem uvažoval ještě o objektu File. Obsahoval by deskriptor souboru, se kterým se pracuje a různé metody k tomu. Instanci by prováděl(y) objekt(y) Client, pro každý soubor jednu instanci.