Есть много способов сделать это: вы на самом деле разрабатываете свой собственный протокол приложения, так что выбор остается за вами;не существует «стандартного» способа взаимодействия клиента и сервера.
Хотите ли вы иметь полный низкоуровневый контроль над тем, что обмениваются клиент и сервер?Затем перейдите к использованию необработанного TCP (UDP здесь бесполезен, так как он не требует соединения и не гарантирует доставку);но вам придется самостоятельно кодировать и передавать объектные данные или сериализовывать их и передавать по необработанному потоку TCP.
WCF значительно упрощает задачу, инкапсулируя все это для вас;если и клиент, и сервер являются приложениями .NET, работающими на последних платформах, это должен быть ваш первый выбор.