It's apparent that you cannot just "send message" anywhere. You always need some applications on both hosts, sending and receiving. Typically enough, one of the sides is a Windows Service, when it comes to Windows (C# is used not only on Windows, it can be used in CLR implemented on many different platforms, including non-Microsoft).
The communication part of software can be created on different levels, from raw sockets to .NET networking to WCF, self-hosted or not. I provided short overviews of those levels in my past answers:
how i can send byte[] to other pc[
^],
Communication b/w two Windows applications on LAN.[
^].
You can select any of the approaches; it may depends on many factors, not only requirements, but even your experience and personal taste.
—SA