有可能测量iOS应用程序中的数据包丢失吗?



我正在构建一个应用程序的一部分,它将要求用户下载不同大小的文件。目前,我正在使用苹果的可达性代码来告诉我是否有连接。(http://developer.apple.com/library/ios/# samplecode/可达性/介绍/Intro.html)

虽然可达性代码可以跟踪"有连接",但它没有能力让我知道连接恶化。似乎我需要扩展Apple代码的功能来满足我的需求。我是否可以测量数据传输过程中丢包的数量或百分比?这将是有帮助的,所以我可以通知用户,并能够暂停或停止下载。

没有可用的iOS API可以深入到网络堆栈中,告诉您何时以及为什么丢弃数据包。它可能在路由器上被丢弃,也可能因为校验和错误而在本地被丢弃。

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

TCP有所谓的拥塞控制和终端主机(iOS设备)将节流他们的吞吐量,因为数据包被丢弃和未被确认。因此吞吐量可能与网络质量有关。但是,您的吞吐量可能会因许多原因而变化,例如网络拥塞、数据包整形、QoS等。

iOS没有公共API来监控wifi信号强度。有一个私有API,但如果你使用私有API,你的应用程序将无法在应用商店中获得批准。

最新更新