- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要测量多个 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 对我来说听起来更合理。
最佳答案
我从未在 JavaSE 或 Android 上工作过,但恕我直言,您的上传测试的概念似乎是正确的,我会做同样的事情,但有一点不同。我会打开 SocketConnection
(到 HTTP 服务器或专用服务器)而不是 HttpConnection
。原因更多是基于直觉,而不是真实的事实。
如果您决定使用专用服务器,您应该考虑 Amazon EC2 按需实例,它提供按小时使用的专用服务器和非常低的价格。我过去曾使用它们进行压力和负载测试。
至于第二个问题,我建议尽可能使用直接 TCP 连接重复测试,看看会发生什么。这样您就可以判断 MDS 是否压缩了发送的数据。
关于java - 测量 GPRS 和 3G 带宽的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208504/
我正在开发一个使用 GPS/GPRS/GSM 的车辆跟踪系统。我目前使用的追踪设备是 GV100,这是一款来自 Quectel ([www.quectel.com][1]) 的 GPS/GPRS/GS
我想用 GPRS 模块发送图片,并通过 TCP 连接到服务器。 但我的图片在某些字节中包含一些“1a”(CTRL+Z)值。正如我们所知,这是使用 AT 命令发送短信或数据的终止符。如何将 ctrl+z
我正在研究用于研究目的的 Telit GL-865 GSM/GPRS 调制解调器套件。我已使用串行端口将其连接到我的电脑,并使用 Putty 进行终端访问。 我可以成功执行所有 AT 命令来发送/接收
我使用的是 telit GC864-DUAL-V2 调制解调器。 我正在尝试在 Linux 中使用 chat 和 pppd 连接到 gprs 网络。我从 pppd 收到错误消息说“LCP:超时发送配置
我有一个名为 gprs 的切换按钮。我需要它来打开和关闭 GPRS。如何做到这一点?我看过here但它给出了错误,我不知道如何在我的情况下使用它。 最佳答案 好的,如果有人遇到同样的问题,我会使用切换
我有一个 GPRS tracker device我在其中安装了 SIM 卡并为网络提供了 APN。 它提到了通过 GPRS 进行通信。 公司在服务器上给你一个账户,你可以监控东西。 提供了一个应用程序
起因 曾经用过西门子出的短信猫, 好处是直接有sdk开发包, 不会硬件开发也能直接使用 缺点也是明显的, 就是只支持windows系统, 另外就是在windows下工作很不稳定, 隔开几天就
我正在尝试使用 pppd 和 AT 命令建立 PPP 连接。这通常适用于我本地提供商的 SIM 卡。但是,我收到了一位住在德国的 friend 的卡片,我想从瑞士尝试一下,但我的行为非常奇怪。 首先,
我有一项非常有趣的挑战/工作任务。我要在远离无人区的机器上监控几个 5V 灯泡(警告灯)。我正在寻找一种经济实惠的设备,其输入允许我连接到灯泡电路以判断它是否点亮。 要求: GPRS 至少两个灯泡的输
我已将 HUAWEI Gprs 调制解调器连接到我的计算机。我想接收通过我的 Delphi 应用程序发送到此设备的短信。 我不知道我该怎么做,有人能给我指出正确的方向吗 最佳答案 使用 ComPort
我正在使用 simcom900 调制解调器,我能够成功建立 GPRS 连接并将数据从我的模块发送到服务器。我正在使用 2g Airtel SIM 并且我将 APN 名称命名为“airtelgprs.c
我需要用我的安卓手机通过 GPRS 接收从 GSM 调制解调器发送的数据包...任何人都可以帮助我如何发送和接收..必须使用什么协议(protocol)? 最佳答案 在服务器启动时创建一个线程并执行以
我可以在安装 Java ME 应用程序时自动保存 GPRS 设置吗?任何人都有任何经验,请分享。 最佳答案 不,你不能拥有这个。 您可以做的是,如果无法提示用户建立对应用程序可用的 Activity
我想通过代码显示在android中检查gprs连接是否活跃我该如何检查。我有以下代码。会成功吗? public static boolean isOnline(Context context) { t
这里让我很头疼。我们在相距数百公里的 field 上有多个树莓派。我们需要能够安全地(大概)远程升级它们,因为本地访问的价格可能高达几百欧元。 raspis 运行 rasbian,/位于安装在 RO
我正在开发一个应用程序,在失去连接的情况下重新启动手机。 在此步骤之前,我们希望通过连接管理器关闭所有打开的连接。我知道我们可以使用 ConnMgrReleaseConnection释放连接,但如果连
我有一个用于启用和禁用在 API 8 和 10 中运行良好的数据的解决方案,但该代码与 ICS 不兼容,我需要一个全局解决方案,以便相同的代码必须与 API 8 兼容迄今为止的 Android 操作系
对于基于 SAGEM HiLo GPRS 的数据通信,它具有 TCP/IP 堆栈,并且有两种连接方式: (1) 使用基本的 GPRS 命令,然后通过 ppp 拨号将调制解调器连接到公共(public)
我有一个 GPS 设备,将安装在许多卡车上。我可以将设备配置为通过 gprs 向 IP 和端口发送数据语句“gps 数据,设备 id”。我正在使用 TcpListener 类来读取服务器端的数据。 T
我们正在寻求开发一个移动网站。在此移动网站上,我们希望根据用户的IP地址自动填充用户的位置(具有适当的备用地址)。我知道根据IP地址对位置进行地理编码(映射到纬度,经度,然后使用该信息获取位置)。 但
我是一名优秀的程序员,十分优秀!