I have played with it quite a bit and can tell you that the easiest
way is to purchase a 3rd party control such as IP*Works. In VB6 a lot
of the Winsock code was wirtten for you. In .NET you actually have to
write the code that accepts the connection, creates a new thread and
so on.
I just bought the control, saved myself tons of time and effort.
Check out the 'System.Net.Sockets' namespace. In addition read about .NET
Remoting and WCF (Windows Communication Foundation). The latter is part of
the recently released .NET Framework 3.0. Depending on the exact scenario
(which purpose does the server serve and where are server and client
located?) even other solutions (such as p/invoke + 'WM_COPYDATA', IPC
mechanisms like named pipes) may be appropriate.