recv返回正确长度,但得到的数据是错误的?
zz962 2011-12-09 09:28:29 写了一个TCP程序负责转发数据,数据源会在短时间内来很多包,大小不一。
用recv接受下来之后send给另外一个socket。
发现如果来得包很多,会出现recv返回正确但得到的buf里内容不正确的现象。比如数据源是先把长度发过来,再把具体数据发过来。当包来得非常密集的时候,我就发现recv得到的长度有的很大,有的则是个负值,有的是0.
而且我发现如果在转发过程中加个Sleep100毫秒后,这种问题出现的几率会大大降低。
想了解为什么会有此问题,另外可能有什么办法(毕竟加延时不是长久之计)