+ -
当前位置:首页 → 问答吧 → 请问linux socket 粘包解决方法

请问linux socket 粘包解决方法

时间:2010-08-25

来源:互联网

本帖最后由 youzlm 于 2010-08-25 22:14 编辑

请问linux socket 粘包解决方法,大家提提建议

由于socket 缓冲池满才发送,,客户端接收由于网络问题,数据不是按顺序收,照成包分离,所以数据不一样.

有没有解决办法.

作者: youzlm   发布时间: 2010-08-25

我一般这样写,发包时,前4个字节代表这个包的长度,接收端先读4个字节,然后就知道后面要读多少数据了。 然后一直把数据包读完。如果是TCP的话,数据包的顺序是不可能乱的。

作者: osdba   发布时间: 2010-08-25

回复 osdba


    我们的方法是一样的..但是你在发包时没有出现粘包情况吗?

作者: youzlm   发布时间: 2010-08-25

没有发现过。从理论上说TCP是可靠的协议,不会出现乱序问题。同时也不是一定要等到socket 缓冲池满s时才发送,没有满时会有一个延迟,最后还是会发出去。

作者: osdba   发布时间: 2010-08-25