linux c socket编程 为什么sleep一会,结果就是正确的 否则就是错误的

2025-02-23 11:40:24
推荐回答(2个)
回答1:

你这个结构体比较大.
有可能是在 socket 层被自动分包了.所以接受到的数据不对.
如果你sleep()一下.就等于等待数据接收完毕.所以数据又对了.

你在recv 的时候有判断返回值是否正确吗.

回答2:

结构体对齐的问题, 对齐了就不会有问题了。在结构体后面加上 __attribute__ ((packed)) 。