Никогда не занимался этой задачей. Из того что я знаю и что приходит в голову без гуглежа.
msdn.microsoft.com/ru-ru/library/system.net.webrequestmethods.http.aspx
По отрытому порту с каждой стороны. Обмен будет написать очень просто. Можно https настроить.
Если адрес только один. То, можно тоже через этот же способ, только держать соединение пока не ответит+ еще пару мантр с которыми можно столкнутся, вроде отправки нескольких сообщений одним пользователем, но они спокойно решаются.
Еще вот пригодится при разработке, так как обмен обычно осуществляется в отдельном потоке, что бы GUI не вис.
msdn.microsoft.com/ru-ru/library/system.threading.thread.aspx