The question makes me doubt that you have enough experience or basic understanding of technology to get to such problem, even though it is relatively simple.
You need to have Linux application which should play a role of network server, and Windows C# application — its client. A request would be sending a command. Now, it can be done on several different levels. One (very painless) way would be: create both client and server side in .NET where you can use sockets on the level of
TcpClient/TcpListener
, classical remoting or WCF. You can run a server-side application on Linux
without recompilation using Mono:
http://en.wikipedia.org/wiki/Mono_%28software%29[
^],
http://www.mono-project.com/[
^].
Another variant based on Mono: install Apache and mod_mono (
http://www.mono-project.com/[
^],
http://www.mono-project.com/Mod_mono[
^]) and create an ASP.NET application with server side on Linux. In this case, even any Web browser can play the role of the client. Start here:
http://www.asp.net/get-started[
^]. A client can be also a regular C# Windows application using
HttpWebRequest
to work with a Web server on Linux, see:
http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx[
^],
http://msdn.microsoft.com/en-us/library/system.net.webrequest.aspx[
^] (see the code sample).
There a are a number of other variants. For example, you can implement Web Service on Linux which would use soap:
http://en.wikipedia.org/wiki/Web_Service[
^],
http://en.wikipedia.org/wiki/SOAP[
^].
A lean solution can use raw sockets on both part and native programming on Linux part, presumably C++, but support of it (implementation of identical application-level protocol) could be more difficult that is both parts are CLR.
—SA