fin*_*tic 10 android bandwidth
我们的应用程序可用作支持Wi-Fi的设备的控制器.有时,当本地网络流量很糟糕时,设备很难接收控制器应用程序发送的命令.如果发生这种情况,我们需要通知用户网络流量很糟糕,并告诉用户切换到另一个路由器.
我们确实对我们要控制的设备进行了心跳.但是,问题可能在没有达到该阶段的情况下发生.我的意思是,首先我们的应用程序需要通过将UDP数据包发送到多播地址来搜索设备.然后在我们收到这些设备的响应后,我们就会在它们之间建立连接.那是我们获得心跳的时候.我正在谈论的问题是即使在搜索设备的阶段,如果网络流量很糟糕,我们的设备将无法接收我们发送的UDP数据包.
到目前为止,这些是我们的尝试:
我们开始使用轻量级的http服务器,在那里放置一个文件 然后我们创建一个客户端并下载该文件,并监控速度.但这似乎无法正常工作,因为存在环回.设备看到双方(http客户端和服务器)属于同一区域(可能是术语错误),因此下载甚至可能无法通过路由器.
该解决方案的缺点是设备需要植根.但我们仍然尝试过iPerf的解决方案.我们在同一设备中使用客户端和服务器对其进行了测试.但速度仍然没有改变.如果我们测试两个设备,一个作为服务器,另一个作为客户端,那么我们得到一个很好的速度测试.但是,我们不能作为我们的客户为我们的产品使用两部手机,我们也不能要求他们根据他们的手机.
我们在github中找到了一个开源库,用于检查连接速度质量.但是,这需要互联网连接以检查速度.但我们的产品不要求用户连接互联网.用户只需要一个路由器和一个应用程序.所以,遗憾的是,我们无法使用此解决方案.
基于我们的第一次尝试,这是我们自己建立的唯一解决方案.我们试图检查文档是否有任何方法在从同一设备下载文件时禁用环回.不幸的是,我们没有得到任何好结果.
所以,我们的问题是:
如果我们的第一次尝试是关闭的,那么我们如何禁用这个环回的东西,以便我们能够正确监控下载速度?
如果我们的第一次尝试不够好,那么我们可以采取其他方式在本地测试带宽吗?
注意:不应该有任何互联网连接,不应使用多个电话.
提前致谢!
虽然这是部分解决方案,但可能有助于检查:
InetAddress.getByName(router).isReachable(timeOut)
Run Code Online (Sandbox Code Playgroud)
正如此处所解释的,它并不总是有效,但如果它确实有效,则证明它不是网络问题。
向路由器 IP 地址发出 http 和 https 请求也是值得的,因为大多数商业路由器确实提供了 Web 界面。
比较后续响应时间可以帮助您评估网络状态。