First
idea you should never play with is creating variable number of threads, something like a thread per client.
Don't even think about it! It is absolutely excessive and can kill your service. For a basic network service based on TCP and multiple channels, you need to create just two network threads: one listening for new connections, another one reading/writing from/two network stream to implement your application-level protocol.
You can find a quick sketch of such design in my past solutions:
Multple clients from same port Number[
^],
automatic updater triggered via server[
^].
Please also see the links to other related solutions in these posts.
Good luck,
—SA