9

可能重复:
Iphone 检测 3g 或 wifi

有没有办法获得当前的网络速度或者设备是否在 EDGE/3G/GPRS 上?我可以使用 Reachability 将 WiFI 与 WMAN 区分开来,但这对我的应用程序来说还不够。

4

1 回答 1

11

如果您真的需要知道,则必须对其进行测试。

建立与具有低延迟的已知服务器的连接。在一个单独的线程中,标记时间(时间 A)并发送一个数据包(确保它是一个数据包)。等待那个线程。标记第一个数据包的时间(时间 B)。读取数据直到完成。标记最后一个数据包的时间(时间 C)。确保服务器响应跨越至少三个数据包。

时间 B - 时间 A 是对延迟的非常粗略的估计。时间 C - 时间 B 是对带宽的粗略估计。

因为您希望尽可能准确,请使用您可用的最低级别的网络访问(我相信在 iPhone 上这是套接字)。使用固定长度的随机数据块作为您的请求和响应。请求的几个字节就足够了,但响应需要构造良好。确保服务器发送一个小的第一个数据包,然后是一个足以填满三个或更多的数据包序列。

到那时,您将需要进行测试。测试,测试,测试和测试。测试不同的网络类型,测试不同数量的网络流量,测试交换网络,以及测试你能想到的任何其他东西。

于 2012-05-23T11:56:23.140 回答