仿照Alex的思路写了一个多线程文件下载的程序,今晚刚解决了所发现的所有BUG,但却又发现了一个问题。我作了个测试,一边开着迅雷或QQ旋风下载文件,一边开着自己写的程序循环下载同一个文件(10~20K),发现下载失败率很高,网速全被迅雷或QQ旋风抢去了。经调试,发现recv频繁返回-1,或者套接字返回SOCKET_ERROR,但用select函数又检测到有数据可以接收,请问这该如何解决?程序先用select函数检测是否有数据可以接收,如果有才使用recv。select设置的超时时间为30秒,起初设置的是15~20秒,设置为30秒后下载失败率稍微低了一点点。除此之外,在select和recv返回错误后,都有重试机制,重试5次后仍然没下载成功,则退出程序,提示下载失败。反正到目前为止,写的这个程序所出现的所有BUG都是在网速很慢的情况下出现的,请问这样的情况可以用什么样的机制来解决?注:连接、发送和接收都使用了非阻塞模式。
解决方案 »
- 在线求助,CListView在insert Column时,有没办法附加一个标志位给它,比如'0','1',用于程序后续的控制用
- 关于PostMessage,发送鼠标消息的问题,在线等答,解决了马上给分
- 有谁知道WX的Bitmap控件响应鼠标的什么消息?
- [求助]TCP短连接,几天后系统TCP不能使用
- 关于keybd_event用法的问题
- connect后,系统缓冲区未满,怎样触发OnSend时间?
- 简单问题,关于sdk的
- 请求高手帮忙看一下我的代码,哪里出了问题,高分相送
- MFC通过ADO写入数据库数据的问题
- cpropertysheet中的cpropertypage间的相互访问
- 还是全屏退出的问题
- 卸载VC2008失败,现在死活装不回去,求救!
提升网速一般是通过大量并发连接来实现的
楼主应该从这方面入手 限制迅雷等p2p的下载端口
不知道可不可以用代码来控制一个进程所使用的流量?