ну сокету все равно придется передавать просто массив байтов. просто нужно сделать классы враперы над сокетами, которые скрывают работу с чистыми указателями
http://www.codeproject.com/KB/IP/client_server_socket.aspx
вот например. во всем остальном коде использовать классы. если передаются двоичные данные - значит делать классы, которые преобразуют бинарные данные в классы. вообще без острой неоюходимочти внутри ядра программы, если пишешь на с++, использовать чистые массивы и указатели нада ну ооочень редко. разве что для передачи в некоторые апи. больше причин для использования не вижу.