1
struct packet_format {
uint32_t field_a;
uint8_t field_b;
uint16_t field_c;
uint32_t field_d;
uint16_t field_e;
uint8_t field_f;
};
uint32_t size_of_packet = 14;
uint8_t *data_to_transmit = malloc(size_of_packet);
struct packet_format *s = (struct packet_format *)data;
s->field_a = 1;
s->field_b = 2;
s->field_c = 3;
s->field_d = 4;
s->field_e = 5;
s->field_f = 6;
sendto(... data_to_transmit, size_of_packet ...)
由於結構填充,傳輸的數據(data_to_transmit)不能保證是正確的(以聲明的結構格式),對嗎?那麼,以正確的格式將數據放入data_to_transmit的最佳方式是什麼?我需要將結構中的每個字段隔開嗎?使用套接字傳輸數據時避免結構填充的最佳方法是什麼?
編輯:在標題稍有不慎
手動複製(memcpy等)可能是確保完全控制傳輸的最佳方法。 –
只需單獨發送結構內容,在接收端分別讀取它們並將它們放回結構中。所以即使在接收端,結構不同也可以工作。 –
分別發送每個成員 – zoska