@Recardo_Recoly

Как передать int/float через recv?

Есть фнкция recv и send
char MSG[MAX_CHAT_SIZE];
memset(MSG, 0, sizeof(MSG));
recv(Sock, MSG, 1, 0);

Как передать не char а int и на клиенте получить этот int в переменной типа int ?
  • Вопрос задан
  • 657 просмотров
Решения вопроса 1
15432
@15432
Системный программист ^_^
int variable;
//...
send(sock, &variable, sizeof(int), 0);

................
int other_side_var;
recv(sock, &other_side_var, sizeof(int), 0);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
nekipelov
@nekipelov
Передавать int, а тем более float, путем записи числа напрямую в сокет - очень и очень плохая идея. Потому, что:

1. Размер типов данных может быть разным на разных машинах, даже при одинаковой ОС и компиляторе, в зависимости от опций.
2. Бинарное представление чисел может различаться на разных машинах (порядок байт, бинарное представление float...).

Поэтому для передачи данных int, float, double и т.д. следует использовать что-нибудь вроде:

1. Google Protocol Buffers
2. Google FlatBuffers
3. MessagePack
4. CBOR.
5. ...
Ответ написан
@Recardo_Recoly Автор вопроса
аргумент типа "int *" несовместим с параметром типа "char *"
Ошибка
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы