- 论坛徽章:
- 0
|
本帖最后由 computerzanz 于 2011-12-17 11:07 编辑
可能不该发在这个版里,版主见谅
windows server端有个结构体- #pragma pack(push, 1)
- struct data
- {
- int a;
- char b[100];
- bool c;
- ......
- }
- #pragma pack(pop)
复制代码 linux client相同的结构体- typedef struct data
- {
- int a;
- char b[100];
- bool c;
- ......
- } __attribute__((packed)) mytype_t;
复制代码 windows server 调用send发送结构体,client 调用recv接收。
Q1:为什么windows client 能够一次接受结构体大小,而linux client 通常分几次接收,接收大小之和是结构体大小?
Q2:为什么"相同的程序"windows client能够顺利接受数据,而linux client却间歇性的长时间阻塞在recv上,查看server端这时的send返回值是正常,linux client recv就是接收不到。
难道和linux/windows 的socket平台有关?还请达人明示
P.S:server 和 client int 都是32位的 |
|