как отправить и получить структуру c между сервером UDP (в c) и клиентом UDP (python)? - PullRequest
0 голосов
/ 20 июня 2020

У меня есть эта структура

struct Data
{
      int id;
      int msglen;
      char msg[100];
}

, и мне нужно передать эту структуру между udp-сервером и udp client. Udp-клиент основан на python.

1 Ответ

0 голосов
/ 20 июня 2020

Сначала вам нужно закодировать данные структуры в один двоичный буфер

#include <endian.h>
...
struct Data d { ... };

uint32_t be_id = htobe32(d.id);
uint32_t be_len = htobe32(d.msglen);

size_t pos = 0;
uint8_t buf[sizeof(struct Data)];

memcpy(buf, (const void *)&be_id, sizeof(be_id));
pos += sizeof(be_id);

memcpy(buf + pos, (const void *)&be_len, sizeof(be_len));
pos += sizeof(be_len);

memcpy(buf + pos, (const void *)d.msg, sizeof(d.msg));

Затем отправить буфер и проанализировать его с другой стороны.

...