数据发送,该如何处理
数据发送8 typedef struct9 {10char head[4]11int cmd12int size13void *data14char end[3]15 }CMD,
数据发送
8 typedef struct
9 {
10 char head[4];
11 int cmd;
12 int size;
13 void *data;
14 char end[3];
15 }CMD, *PCMD;
data里存放的数据每次长度不一,空间堆分配,用socket通信发送数据,能否连同数据一次发送到服务器去?给点建议
[解决办法]不能. 得分两次发.
可以改成这样:
typedef struct
9 {
10 char head[4];
11 int cmd;
12 int size;
14 char end[3];
13 char data[1]; // 变长, 某些编译器支持写成 data[0]
15 }CMD, *PCMD;
PCMD p = malloc(sizeof(CMD) - 1 + data 的长度)
这种就可以一次发, 但是别用 sizeof, 用你 malloc 的大小.
[解决办法]不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html