可能重复:
Iphone detect 3g or wifi
有没有办法获得当前的网络速度或设备是否在EDGE / 3G / GPRS? 我可以使用Reachability来区分WiFI和WMAN,但这对我的应用来说还不够。
答案 0 :(得分:11)
如果你真的需要知道,你将不得不进行测试。
设置与低延迟的已知服务器的连接。在单独的线程中,标记时间(时间A)并发送数据包(确保它是一个数据包)。等待那个线程。标记第一个数据包的时间(时间B)。读取数据直到完成。标记最后一个数据包的时间(时间C)。确保服务器响应至少包含三个数据包。
时间B - 时间A是对延迟的非常粗略的估计。 时间C - 时间B是对带宽的粗略估计。
因为您希望尽可能准确,所以使用您可用的最低级别的网络访问(我相信iPhone这是套接字)。使用固定长度的随机数据块作为您的请求和响应。请求的几个字节就足够了,但响应需要很好地构建。确保服务器发送一个小的第一个数据包,然后发送一个足够大的数据包序列来填充三个或更多。
此时你需要测试。测试,测试,测试和测试。测试不同的网络类型,使用不同的网络流量进行测试,使用交换网络进行测试,并测试您能想到的任何其他内容。