TCP数据流传输遇到的问题

通过socket传输数据的时候遇到问题。模式:一服务器对多客户端;遇到的问题刚开始感觉有点奇怪,有时正确有时又出错,而且出错的场合也不可捉摸,大致测试了下,猜测过如下可能性:

先是感觉群发可以,单点发送不行

后来发现是有线网可以,无线网不行

再发现是大数据不行,小数据包可以

最后记录在发送端和接收端 数据传输的报文,发现问题是:

在接收端时,TCP数据读取不完全时,就开始解析了,导致协议报文解析错误

靠。

有线网时,速度快,发送大数据报文也可以。

而无线网上面,速度慢,数据发送有较长的时间间隔,所以,数据片读取不完全的情况发生概率高多了。

以流形式传输时,发送端的多次发送可能会被一次接收;
一次发送也可以被多次读取。
比如
发送端发送三个报文:
1.AAAAAAAAAAAAAAAAAAAAAAAAAAAA
2.BBBBBBBBBBBBBBBBBBBBBBBBBBBB
3.CCCCCCCCCCCCCCCCCCCCCCCCCCCC

接收端可能会以不同的形式接收:
可能被一次接收:

AAAAAAAAAAAAAAAAAAAAAAAAAAAABBB<wbr></wbr>BBBBBBBBBBBBBBBBBBBBBBBBBCCCCCC<wbr></wbr>CCCCCCCCCCCCCCCCCCCCCC

可能被两次接收:
报文1.AAAAAAAAAAAAAAAAAAAAAAAAAAA<wbr></wbr>ABBBBBBBBBBBBBBB
报文2.BBBBBBBBBBBBBCCCCCCCCCCCCCC<wbr></wbr>CCCCCCCCCCCCCC

可能被三次接收:
报文1.AAAAAAAAAAAAAAAAAAAAAAAAAAA<wbr></wbr>A
报文2.BBBBBBBBBBBBBBBBBBBBBBBBBBB<wbr></wbr>B
报文3.CCCCCCCCCCCCCCCCCCCCCCCCCCC<wbr></wbr>C

也可能被四次接收:
报文1.AAAAAAAAAAAAAAAAAAAAAAA
报文2.AAAAABBBBBBBBBBBBBBBBBB
报文3.BBBBBBBBBBCCCCCCCCCCCCC
报文4.CCCCCCCCCCCCCCC

等等。
以流形式,会被任意拆分,因此应用程序,需要对数据进行截分处理。

而原本我的错误理解是:

接收端只可能会被以如下形式接收:分三次接收

第一次接收报文1.AAAAAAAAAAAAAAAAAAAAAAAAAAA<wbr></wbr>A
第二次接收报文2.BBBBBBBBBBBBBBBBBBBBBBBBBBB<wbr></wbr>B
第三次接收报文3.CCCCCCCCCCCCCCCCCCCCCCCCCCC<wbr></wbr>C

理解完全错误。又由于后面的报文解析没有完善的出错处理,导致程序行为不可理解。因此感觉这个错误神秘兮兮。
是这样的麼?
至少测试结果展现出来就是这样的。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值