解决方案 »
- vc添加水印,有源码例子么?
- error LNK2001: unresolved external symbol "protected: void __thiscall CBookRetur
- 绘图
- 有关button Radio的Group属性的问题??????
- 求助:俺的VC,只要Ctrl+F(查找),就死了(无响应了),大约2分多钟才活过来
- 关于输入:
- 两个char[]如何相加?
- 奇怪:为什么一般pc机的两个串口com1和com2,为什么有的com1在上面,有的却com2在上面啊
- 怎样在单文档工程里创建全屏幕的窗口?
- 关于在浏览器中的URL的问题
- 如何在Windows内核层分配TCP和UDP端口号?
- 用vc++编写usb蓝牙通讯遇到的问题,望大神指教
第一种思路正是我在考虑的,因为服务器也是自己写的,但是,有一种情况,像从FTP、Web服务器下载,这是服务器都不是自己写的,一思路就不可行。我的服务器协议通道还是很容易扩展的,准备实践一下一思路
限速.限制send recv就行了.防火墙都是这么搞的.
send和recv也是操作socket的缓冲区,如果不让recv或者定时recv的话,又回到了上面那个问题
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
我也写过类似的限速下载的程序。加一个速度记录INT。
各线程下载时累加INT的值,当该INT大于设定下载网速是,停止下载代码的运行。
每秒清零一次。
下载 recv 用sleep也是很正常的
自己写lsp或者winsocket hook就搞定
你所说的慢慢发送,除非是改写驱动,很明显p2p并非这样。
从内核模型说起,tcp/ip协议好像对时间并没有定义,只是一方不停send,一方不停recv。发送时数据放入send buffer,然后再发送出去。如果send buffer已经满了,里边的数据没有发送出去,此时继续调用send会失败或是一直阻塞着,取决于你使用的是同步或是异步模型。recv时道理也相同,recv buffer数据满了时还没有读取就不再接收数据了。所谓的滑动窗口就是这个东西,他通常反映的是对方内核buffer的能力,当对方buffer满了时tcp窗口会通告发送方对方已经无能力接收了,省点力气吧。
setsockopt即使把buffer设置为1,只要网速够快也一样起不到限速的作用。此外,还会因为频繁调用send,recv导致cpu消耗过高,反倒不是一个好选择。最好方案是超过count值就不再发送或接受,此时recv或send方的buffer会迅速被数据充满,从而不再发送数据了,带宽被节约出来给其他程序了。