TCP数据流传输遇到的问题
2008-06-05 16:41
134 查看
通过socket传输数据的时候遇到问题。模式:一服务器对多客户端;遇到的问题刚开始感觉有点奇怪,有时正确有时又出错,而且出错的场合也不可捉摸,大致测试了下,猜测过如下可能性:
先是感觉群发可以,单点发送不行
后来发现是有线网可以,无线网不行
再发现是大数据不行,小数据包可以
最后记录在发送端和接收端 数据传输的报文,发现问题是:
在接收端时,TCP数据读取不完全时,就开始解析了,导致协议报文解析错误
靠。
有线网时,速度快,发送大数据报文也可以。
而无线网上面,速度慢,数据发送有较长的时间间隔,所以,数据片读取不完全的情况发生概率高多了。
以流形式传输时,发送端的多次发送可能会被一次接收;
一次发送也可以被多次读取。
比如
发送端发送三个报文:
1.AAAAAAAAAAAAAAAAAAAAAAAAAAAA
2.BBBBBBBBBBBBBBBBBBBBBBBBBBBB
3.CCCCCCCCCCCCCCCCCCCCCCCCCCCC
接收端可能会以不同的形式接收:
可能被一次接收:
AAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCC
可能被两次接收:
报文1.AAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBB
报文2.BBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCC
可能被三次接收:
报文1.AAAAAAAAAAAAAAAAAAAAAAAAAAAA
报文2.BBBBBBBBBBBBBBBBBBBBBBBBBBBB
报文3.CCCCCCCCCCCCCCCCCCCCCCCCCCCC
也可能被四次接收:
报文1.AAAAAAAAAAAAAAAAAAAAAAA
报文2.AAAAABBBBBBBBBBBBBBBBBB
报文3.BBBBBBBBBBCCCCCCCCCCCCC
报文4.CCCCCCCCCCCCCCC
等等。
以流形式,会被任意拆分,因此应用程序,需要对数据进行截分处理。
而原本我的错误理解是:
接收端只可能会被以如下形式接收:分三次接收
第一次接收报文1.AAAAAAAAAAAAAAAAAAAAAAAAAAAA
第二次接收报文2.BBBBBBBBBBBBBBBBBBBBBBBBBBBB
第三次接收报文3.CCCCCCCCCCCCCCCCCCCCCCCCCCCC
理解完全错误。又由于后面的报文解析没有完善的出错处理,导致程序行为不可理解。因此感觉这个错误神秘兮兮。
是这样的麼?
至少测试结果展现出来就是这样的。
先是感觉群发可以,单点发送不行
后来发现是有线网可以,无线网不行
再发现是大数据不行,小数据包可以
最后记录在发送端和接收端 数据传输的报文,发现问题是:
在接收端时,TCP数据读取不完全时,就开始解析了,导致协议报文解析错误
靠。
有线网时,速度快,发送大数据报文也可以。
而无线网上面,速度慢,数据发送有较长的时间间隔,所以,数据片读取不完全的情况发生概率高多了。
以流形式传输时,发送端的多次发送可能会被一次接收;
一次发送也可以被多次读取。
比如
发送端发送三个报文:
1.AAAAAAAAAAAAAAAAAAAAAAAAAAAA
2.BBBBBBBBBBBBBBBBBBBBBBBBBBBB
3.CCCCCCCCCCCCCCCCCCCCCCCCCCCC
接收端可能会以不同的形式接收:
可能被一次接收:
AAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCC
可能被两次接收:
报文1.AAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBB
报文2.BBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCC
可能被三次接收:
报文1.AAAAAAAAAAAAAAAAAAAAAAAAAAAA
报文2.BBBBBBBBBBBBBBBBBBBBBBBBBBBB
报文3.CCCCCCCCCCCCCCCCCCCCCCCCCCCC
也可能被四次接收:
报文1.AAAAAAAAAAAAAAAAAAAAAAA
报文2.AAAAABBBBBBBBBBBBBBBBBB
报文3.BBBBBBBBBBCCCCCCCCCCCCC
报文4.CCCCCCCCCCCCCCC
等等。
以流形式,会被任意拆分,因此应用程序,需要对数据进行截分处理。
而原本我的错误理解是:
接收端只可能会被以如下形式接收:分三次接收
第一次接收报文1.AAAAAAAAAAAAAAAAAAAAAAAAAAAA
第二次接收报文2.BBBBBBBBBBBBBBBBBBBBBBBBBBBB
第三次接收报文3.CCCCCCCCCCCCCCCCCCCCCCCCCCCC
理解完全错误。又由于后面的报文解析没有完善的出错处理,导致程序行为不可理解。因此感觉这个错误神秘兮兮。
是这样的麼?
至少测试结果展现出来就是这样的。
相关文章推荐
- qt TCP接收数据遇到的问题
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十五)Structured Streaming:同一个topic中包含一组数据的多个部分,按照key它们拼接为一条记录(以及遇到的问题)。
- 【EXPDP/IMPDP】数据泵导入导出遇到目录没有权限问题
- 2014.1.16实施数据迁移时遇到的问题(ORA-00214和ORA-39700问题解决)
- 今天在csdn上遇到一个问题,是关于sql数据行列转换的,我的写法如下:
- Android客户端页面提交数据到tomcat的servlet插入mysql中的信息表遇到的中文乱码问题
- 在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题
- 访问cv::Mat中的数据时遇到的指针类型问题
- 今天遇到一个问题:在程序中加入的定时触发器,当时出现这样一个问题,触发器定时2秒,程序从后台查询数据经过复杂处理后时间超过了2秒,我查阅好些网络上说有可能触发器等待程序执行完毕后,在触发下一次,也有说
- Echarts 异步数据加载遇到的问题
- 数据库中导出CSV文件与EXCEL文件数据对比可能遇到的问题与解决方法
- 请教数据恢复中遇到的问题
- 遇到硬盘数据丢失问题,选择EasyRecovery
- Oracle数据导出遇到的问题及解决的办法
- 往具体地址写数据时遇到的问题
- C# 操作数据导出到Excel遇到的一个小问题
- 关于使用TCP或者其他链接方式时数据接收问题
- SpringBoot插入数据到Mysql中遇到的乱码问题(Mysql环境原因)
- 再VB 2005的拖放式数据绑定时遇到的问题
- linq更新部分数据时遇到的问题及解决办法