读书人

数据发送,该如何处理

发布时间: 2013-07-16 22:38:05 作者: rapoo

数据发送



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

读书人网 >C语言

热点推荐