如何确定哪个服务器在Android中更接近/更快?

时间:2012-10-21 09:25:20

标签: android

在第一个应用程序启动时,我下载~50 MB的文件,然后解压缩它们。
我有来自世界各地的用户,我有3个不同的服务器,我可以托管文件,所以我想使用它们并检查代码哪个服务器最快/最接近用户并使用它..

我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:1)

为什么不使用Google Play服务添加“扩展文件”?见这里:http://developer.android.com/guide/google/play/expansion-files.html

我没有亲自尝试过,但它绝对可以帮到你。

答案 1 :(得分:0)

可能会向每个服务器发送一个简单的ping.php脚本请求,测量读取响应所需的时间并选择最佳响应。不要忘记向虚拟服务器发送第一个请求或下载网页,以便手机激活网络并将其设置为最佳性能(否则,与下一个服务器相比,您的第一台服务器可能总是看起来很慢)

答案 2 :(得分:0)

我之前从未这样做过,所以这只是一个猜测,但如果你想找出哪个更接近:

获取用户的IP地址: How to get IP address of the device from code?

对IP地址执行反向DNS查找,这将为您提供以下内容: c-24-131-5-42.hsd1.va.comcast.net

通过查看结果字符串,您可以判断我住在VA。使用更接近您的服务器并使用它的国家/州的数据。

答案 3 :(得分:0)

自己这样做;您需要使用设备的IP地址查询geo ip服务以获取其大致位置;然后将其与哪个服务器进行比较,以便最好地提供文件。这有其自身的问题(代理/ VPN隧道就是其中之一)。

其次是ping您的服务器。这里的问题可能是提供商可能阻止ping(特别是如果设备不在wifi上);即使它们在wifi上,也可以阻止ping用于外部地址,并且仅允许在网络内。在这种情况下; ping总是会失败。

所以可靠的方法是使用Content Delivery Network。他们将负责自动从最近的服务器提供文件。您无需修改​​应用程序或管理不同的服务器。

答案 4 :(得分:0)

您还可以尝试与您拥有的每台服务器建立TCP连接,并跟踪执行此操作所需的时间。然后使用具有最短时间的那个。

或让设备从包含服务器已知可用性的每台服务器中提取文件。