首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数据发送,该如何处理

2013-07-16 
数据发送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

热点排行