gpt4 book ai didi

java - 测量 GPRS 和 3G 带宽的正确方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:34:52 26 4
gpt4 key购买 nike

我需要测量多个 GPRS 和 3G BlackBerry 设备的实际传输速率。由于此数据取决于运营商和设备,而大多数在线速度测试依赖于 JavaScript、Flash 或 HTML5,因此我觉得有必要开发自己的基准测试应用程序。

因为我没有任何服务器来打开套接字,但我可以在我的公司使用多个 HTTP 服务器,所以我使用 HTTPConnection 来获取文件 (HTTP GET) 并发布一些字节(HTTP POST),然后测量耗时。下载速度似乎是正确的,并且与我在互联网上找到的已知速度限制一致,但是上传测试产生了完全出乎意料的结果,比下载速度快了好几倍,也比理论上的上传速度限制要大。也在模拟器和真实设备上进行了测试。这是上传测试的代码:

    Httpconnectionection connection = null;
OutputStream os = null;

try {
connection = getHttpconnectionection(url);
if(connection != null){
connection.setRequestMethod(Httpconnectionection.POST);

os = connection.openOutputStream();
for(int i = 0; i < numbytes; i++){
os.write(0);
}
os.flush();

int respCode = connection.getResponseCode();
if (respCode != Httpconnectionection.HTTP_OK) {
userMessage = "HTTP Response code: " + respCode + "\nMessage: " + connection.getResponseMessage();
}
} else {
userMessage = "unable to connnect";
}
} catch (IOException e) {
userMessage = e.toString();
} finally {
if(os != null){
try {
os.close();
} catch (IOException e) {}
}

if(connection != null){
try {
connection.close();
} catch (IOException e) {}
}
}

如果我在 JavaSE 或 Android 上执行类似的测试,这个测试是否正确?难道我做错了什么?我在这里很困惑。

我的第二个问题更针对黑莓手机:我知道在黑莓手机中,MDS 增加了一些压缩。可能是模拟器和设备(我所有的设备都在 BIS 或 BES 上)都压缩了发送的数据(全为零,所以压缩得很好)并且这样做测试不计算发送的实际字节数但是压缩的呢?


更新:关于我的第二个问题,我怀疑 MDS 可能正在压缩,所以我更改了这个问题的写入行,以将熵添加到测试中:

os.write(i);

我还更新了测试工具以支持不同的连接模式,并按照 Vincenzo 先生的建议直接使用 TCP 进行测试。这些是结果:

-------------------------------------------------------------
| Connection Mode | Mean Speed (3G) | Mean Speed(GPRS)|
-------------------------------------------------------------
| BIS | 390 Kbps | 90 Kbps |
| Direct TCP | 255 Kbps | 17 Kbps |
-------------------------------------------------------------

这证明 MDS 对数据进行了压缩,而我最初发送的一系列零很可能正在经历高度压缩。现在 GPRS 下直接 TCP 的 17 Kbps 对我来说听起来更合理。

最佳答案

  1. 我从未在 JavaSE 或 Android 上工作过,但恕我直言,您的上传测试的概念似乎是正确的,我会做同样的事情,但有一点不同。我会打开 SocketConnection(到 HTTP 服务器或专用服务器)而不是 HttpConnection。原因更多是基于直觉,而不是真实的事实。
    如果您决定使用专用服务器,您应该考虑 Amazon EC2 按需实例,它提供按小时使用的专用服务器和非常低的价格。我过去曾使用它们进行压力和负载测试。

  2. 至于第二个问题,我建议尽可能使用直接 TCP 连接重复测试,看看会发生什么。这样您就可以判断 MDS 是否压缩了发送的数据。

关于java - 测量 GPRS 和 3G 带宽的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com