c - 在 c 中制作和发送混合 double 和整数数组

标签 c arrays sockets

我正在尝试从一个套接字发送一条消息,该消息的格式为 on

double,int,int,int,int,...,int

N 个整型值 我怎样才能发送它? 我已经打开了一个套接字,但我如何将所有这些元素放在一个将被发送的数组中:

status=sendto(SendSocket,msg,sizeof(double)+N*sizeof(int),
0,(void*)&out_socketaddr,sizeof(out_socketaddr));

其中 MSG 是所有这些元素的内存(数组),out_socketaddr 是目的地

最佳答案

uint8_t array [sizeof(this) + sizeof(that) + ...];
uint8_t* ptr = array;

memcpy(ptr, &this, sizeof(this));
ptr+=sizeof(this);
memcpy(ptr, &that, sizeof(that));
ptr+=sizeof(that);
...

避免制作结构。尽管结构将使代码更具可读性,但它们也引入了填充,这在这种情况下将是一个问题。

关于c - 在 c 中制作和发送混合 double 和整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188393/

相关文章:

c - mmap 问题 -> 段错误

c - MPI_Bcast 通信的 MPI 段错误

c - unsigned short int 与 unsigned int 有何不同

C 程序要求两个单独的文件,然后显示字符数、行数和单词数

c# - 为什么我应该在 JSON 反序列化中使用 List<> 而不是数组?

javascript - react native 过滤器数组返回未定义

python - 如何让 socket.listen(1) 工作一段时间然后继续剩下的代码?

c - Ubuntu 上的套接字(不允许操作)

arrays - 合并 JSON 文件并使用 JQ 重新计算百分比

c++ - 为什么从服务器接收数据会出现段错误(No error in sending)?