能力值:
( LV8,RANK:120 )
|
-
-
2 楼
ADSL。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
这问题挺有趣,也很难回答,因为限制带宽的因素太多了。
楼上是个正解,ADSL的上传速度只有512K(哪怕你下载有4兆),如果你是ADSL,那多半就是这问题了。
因外的可能是QOS,可能是你本机,也可能是对端,只要有一个环节对QOS作了限制,速度就会上不去。
可以试试同时开两个线程上传,看看速度有没有提升
或者换个网络环境试试
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
"可是实际的上传速度远远没有达到迅雷的下载速度。(迅雷能到120+KB/s, 我的只到70+KB/s)"
请你先确定,你是用上传速度跟讯雷的下载速度比较.(上传速度跟下载速度是不对等的).
如果你是用下载速度跟讯雷的下载速度比较,还是慢,我再继续作答.
|
能力值:
( LV5,RANK:70 )
|
-
-
5 楼
好!明天,我去试试下载和双线程^_^
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
1、通常普通用户使用的ADSL是非对称数字用户环路,上行带宽和下行带宽差很多,比如某地的情况为:
带宽 上行 理论值(bps) 实际
1M 上行 256K 32K~200K
2M 上行 384K 32K~330K
3M 上行 512K 32K~450K
4M 上行 640K 32K~550K
12M 上行 768K 32K~700K
16M 上行 1M ADSL上行带宽最高为1M。
512Kbps的上行带宽 = 64K字节/S,这还不是有效数据(净荷)传输速率,净荷传输速率还要减去协议的消耗(如:IP头、tcp头等)。
2、用迅雷下载时,数据源可能具有大的上行带宽和你的大下行带宽配套,从而形成较大的下载速度;即使数据源也是普通用户,由于迅雷采用多线程下载,即它可以同时从多个数据源同时下载,从而把多个数据源的上行带宽组合起来形成较大的带宽,而你的程序是单线程只具有一个数据源,必受制于数据源的实际上行有效带宽,所以你达不到迅雷的下载速度(即使你的传输速率接近临界)。
3、另外,每个包传输的有效数据的长度也会影响净荷传输速率,即在其他条件不变的情况下,每个包发送1字节和发送1K字节所获得最大传输速率是不一样的。有效数据越长净荷传输速率越高。
因此,如果你采用多线程(比如20个),同时从多个数据源(比如20台机器)接收数据,且传输使用最大包尺寸,肯定会达到甚至超过迅雷的传输速度。
背景知识:
以太网一个数据包最大长度1514字节,那么IP包最大为1500,至于TCP和UDP部分的长度,要看IP协议里面是否有router等等选项,不能一概而论,如果以最简单的局域网来说,那么是1480个字节。
对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS,Maxitum Segment Size)决定,MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。TCP有一个MSS发现机制,来确定通讯线路的最大MSS,对此可参考有关TCP/IP详解方面的书籍。
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
如果你的程序同时和讯雷一起测试,那么你N线程都无法比它快的.如果你自己设计过TCP协议栈,那么就会很清楚其中的原因了.
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
TCP里的QOS参数也是带宽限制的一个原因,但我想楼主应该不会笨到在测试的时候还开着迅雷吧……
|
能力值:
( LV5,RANK:70 )
|
-
-
9 楼
...........不会下载文件的说。。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
你铁定是开了什么抢速度的程序了,迅雷速度之所以快是因为它由很强大的抢速度算法!
|
|
|