当前位置: 技术问答>linux和unix
socket memcpy的使用
来源: 互联网 发布时间:2016-12-29
本文导语: short int a 2字节 short int b 2字节 int c 4字节 int d 4字节 char e[]; 假设10字节 合一后数据长度为22字节 我想将以上5个数据合为一个二进制数据,然后通过socket的send()发出。发出时的长...
short int a 2字节
short int b 2字节
int c 4字节
int d 4字节
char e[]; 假设10字节
合一后数据长度为22字节
我想将以上5个数据合为一个二进制数据,然后通过socket的send()发出。发出时的长度应该为22.请问应该怎么使用memcpy呢。或者有没有其他更好的方法将这些数据发出呢?新手,刚学socket编程,对此很迷惑。
short int b 2字节
int c 4字节
int d 4字节
char e[]; 假设10字节
合一后数据长度为22字节
我想将以上5个数据合为一个二进制数据,然后通过socket的send()发出。发出时的长度应该为22.请问应该怎么使用memcpy呢。或者有没有其他更好的方法将这些数据发出呢?新手,刚学socket编程,对此很迷惑。
|
char buff[1024];
*(short*) buff = a;
*(short*) (buff + 2) = b;
*(int*) (buff + 2 + 2) = c;
*(int*) (buff + 2 + 2 + 4) = d;
memcpy(buff + 2 + 2 + 4 + 4, e, 10);
send(buff,22)
可能还要考虑一个字节顺序,但你现在阶段不需要。
*(short*) buff = a;
*(short*) (buff + 2) = b;
*(int*) (buff + 2 + 2) = c;
*(int*) (buff + 2 + 2 + 4) = d;
memcpy(buff + 2 + 2 + 4 + 4, e, 10);
send(buff,22)
可能还要考虑一个字节顺序,但你现在阶段不需要。
|
典型的协议数据传送。
LS的已经给出答案了。使用结构体将单个数据"打包"。解析的时候使用同样的结构体解析。
LS的已经给出答案了。使用结构体将单个数据"打包"。解析的时候使用同样的结构体解析。
|
那些数据是在结构体中定义吗?
如果是,定义该结构体变量,赋值,直接将其用send发送出去。由于是22字节,可以指定发送、接收字节数为22。
个人意见。
如果是,定义该结构体变量,赋值,直接将其用send发送出去。由于是22字节,可以指定发送、接收字节数为22。
个人意见。