This is quite possible, but to make it really easy I would suggest you use Mono on Linux (http://en.wikipedia.org/wiki/Mono_(software)
You can do it without Mono, of course, but will spend considerable amount of time for mapping all data types, set aside possibility to do remoting. With Mono, you can share any part of you code between Windows and Linux. Projects developed on Windows will run on Linux without re-compilation (if you use standard set of libraries plus a lot of non-standard but compatible, even
). I know because I run my Windows .NET applications on Linux.
My instructions I posted in response to other Question on networking will also apply. Please see: Multple clients from same port Number
(As a side dish, please see a collection of my advices on threading which are helpful on both server and client sides): How to get a keydown event to operate on a different thread in vb.net
]. Please ignore the fact that those directions are related to some very different applications — most of them are quite applicable to your situations.