关于VB中WINSOCK控件严重丢包的问题
我在用winsock控件请求百度贴吧的页面的时候出现了极严重的丢包现象,大概70K的网页实际只收到了13K左右。经过实验,发现Winsock自带的bytesTotal参数...
我在用winsock控件请求百度贴吧的页面的时候出现了极严重的丢包现象,大概70K的网页实际只收到了13K左右。
经过实验,发现Winsock自带的bytesTotal参数传到的数据大小也是只有13K左右。
经过我的多次实验,发现问题出在Winsock1.GetData tempdata这句,如果注释掉,就可以接收到大约50K的数据(还是没收全!),又测试了多次,发现无论是否注释Winsock1.GetData a,出来第一段数据恒为8192字节,其他的数据大小都在波动。
结合上面的实验,我推测可能是度兽的服务器速度太快,导致Winsock在处理数据的时候丢掉了大部分数据,即使没有处理数据,在执行一个小小的print的时候也丢掉了一部分(可能我不写Winsock1_DataArrival事件就收全了吧?)。
以上是问题描述和个人分析,麻烦各位大神解答一下,该怎么办,谢谢
【问题比较难,可能没人解答,为了避免浪费,所以暂不设悬赏,视解答情况追加50(给了我灵感完成)到100(帮忙完全解答)不等。】
已经明白了,把getdata改成peekdata,因为peekdata是不清空缓冲区,getdata会清空。用peekdata在最后一次性获取缓冲区内所有数据即可(getdata在速度快时容易把还没读的都清除了),谢谢大家。 展开
经过实验,发现Winsock自带的bytesTotal参数传到的数据大小也是只有13K左右。
经过我的多次实验,发现问题出在Winsock1.GetData tempdata这句,如果注释掉,就可以接收到大约50K的数据(还是没收全!),又测试了多次,发现无论是否注释Winsock1.GetData a,出来第一段数据恒为8192字节,其他的数据大小都在波动。
结合上面的实验,我推测可能是度兽的服务器速度太快,导致Winsock在处理数据的时候丢掉了大部分数据,即使没有处理数据,在执行一个小小的print的时候也丢掉了一部分(可能我不写Winsock1_DataArrival事件就收全了吧?)。
以上是问题描述和个人分析,麻烦各位大神解答一下,该怎么办,谢谢
【问题比较难,可能没人解答,为了避免浪费,所以暂不设悬赏,视解答情况追加50(给了我灵感完成)到100(帮忙完全解答)不等。】
已经明白了,把getdata改成peekdata,因为peekdata是不清空缓冲区,getdata会清空。用peekdata在最后一次性获取缓冲区内所有数据即可(getdata在速度快时容易把还没读的都清除了),谢谢大家。 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询