Скорее не делайте этого сами, используйте библиотеки, которые делают это для вас, например Boost.Asio и Boost.Serialization .
Boost Asio - это библиотека, котораязаменяет сокеты и даже предоставляет интерфейс , такой как C ++ iostreams , и будет обрабатывать для вас встроенные типы отправки, такие как int
.
Повышенная сериализация позволяет легко сериализовать ваши классы, чтобы вы могли отправлятьих по сети.
Если вы не можете использовать дополнительные библиотеки, вам придется отправлять данные вручную через обычные сокеты - убедитесь, что вы не забыли использовать htons
, ntohs
, htonl
и ntohl
функций, иначе ваш код сломается, когда два компьютера будут использовать разные порядковые номера (порядок байтов).
маленький фрагмент:
// sender:
unsigned long to_send = 123;
unsigned long to_send_n = htonl(to_send); // convert to network byte order
send(send_socket, (const char*)(&to_send_n), sizeof(unsigned long), flags);
// reciever:
char recv_buf[sizeof(unsigned long)];
recv(recv_socket, recv_buf, sizeof(unsigned long)); //recieve number
unsigned long recieved = ntohl(*((unsigned long*)recv_buf), flags); // convert back to host byte order
Поскольку эти функции толькосуществуют для неподписанных типов, вы будете ограничены неподписанными типами ..