是否可以测量iOS应用程序中的数据包丢失?

时间:2013-05-23 19:34:02

标签: ios ios5 ios6 connectivity

我正在构建一个应用程序的一部分,要求用户下载不同大小的文件。目前,我正在使用Apple的Reachability代码告诉我是否有连接 (http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

虽然可达性代码可以跟踪“有连接”,但它无法让我知道连接恶化。似乎我需要扩展Apple代码的功能以满足我的要求。我可以在数据传输过程中测量丢弃数据包的数量或百分比吗?这将有所帮助,因此我可以向用户发送消息并能够暂停或停止下载。

1 个答案:

答案 0 :(得分:1)

没有可用的iOS API可以深入到网络堆栈中,它可以告诉您数据包被删除的时间和原因。它可以被丢弃在路由器上,或者由于校验和错误而可以在本地丢弃。

它是什么类型的数据?我假设TCP。 您可能能够通过检查吞吐率来推断连接质量。您可以计算每秒收到的字节数。

TCP有一个名为congestion control的东西,终端主机(iOS设备)会在数据包被丢弃并且未被确认时减少其吞吐量。因此吞吐量可能与网络质量相关。但是,由于网络拥塞,数据包整形,QoS等多种原因,您的吞吐率可能会有所不同。

iOS没有公开API to monitor the wifi signal strength。有一个私有API,但如果您使用私有API,则您的应用不会在应用商店中获得批准。