请问SOCKET接收数据处理的方式:我的包格式包长度(4位)  功能号(2位)   包序号(4位)  包内容(不限)
0014          01            0001        abcd
包长度是所有内容加起来的长度,如上面为14个字符所以上面的包为:0014010001abcd现在我解包的方式是收下来后先取前面4位,然后根据其值取相应的长度,认为是完整包,然后根据
功能好做相应处理
现在主要是担心包不完整的情况,好象不好处理,大家说下你们都是怎么处理不正常包的(如两个包一起或
一个包不完整,再或者收下的包含一个完整包和一个不完整包等等)

解决方案 »

  1.   

    请大哥说下你们一般怎么构建包?这种PDU方式中国移动也是用这种方式,我也是想知道有没有不粘包的方法
      

  2.   

    只要包头有包长度,就不怕粘包.注意消息缓存就好了,如果消息没接收完整,就先缓存,等下次收到数据时再处理.TCP不用担心包被丢弃一部分,只要你自己别丢弃就行.
      

  3.   

    tcp是流式的,只要定义好包头,接收到包头取出包体长度,在接收包体就行了