当前位置: 首页 > 面试题库 >

如何使用Java检测Internet连接速度?

钱澄邈
2023-03-14
问题内容

在我的Java应用程序中,如何检测Internet连接速度有多快?例如,我在家中使用AT&T Fast
DSL,我想知道是否有一种方法可以编写执行以下操作的方法:

int getInternetConnectionSpeed()
{
   ...
}

它将返回以kbps为单位的数字,例如2800kbps [2.8 M]

编辑:我要问的原因是在我的应用程序中,我可以打开多个Internet流,具体取决于用户的Internet连接速度,我希望它自动确定要打开多少个流而不会中断应用程序。


问题答案:

我认为您可能会以错误的方式考虑问题。拍摄连接速度快照仅表示其在该瞬间的吞吐量。当您运行消耗带宽的测试时,他们很可能正在运行另一个应用程序,然后您的测量值一文不值。

相反,我认为您应该根据线程是增加还是减少它们的吞吐量来不断添加或删除线程。我建议这样的事情(仅限伪代码):

while(true) {
  double speedBeforeAdding = getCurrentSpeed();
  addThread();
  // Wait for speed to stabilise
  sleep(20 seconds);
  double speedAfterAdding = getCurrentSpeed();
  if(speedAfterAdding < speedBeforeAdding) {
    // Undo the addition of the new thread
    removeThread();
    // Wait for speed to stabilise
    sleep(20 seconds);

    if(getNumberOfThreads() > 1) {
      double speedBeforeRemoving = getCurrentSpeed();
      // Remove a thread because maybe there's too many
      removeThread();
      // Wait for speed to stabilise
      sleep(20 seconds);
      double speedAfterRemoving = getCurrentSpeed();
      if(speedAfterRemoving < speedBeforeRemoving) {
        // Add the thread back
        addThread();
        // Wait for speed to stabilise
        sleep(20 seconds);
      }
    }
  }
}

您可以根据自己的需要调整睡眠时间。我假设这里getCurrentSpeed()返回 所有
下载线程的吞吐量,并且您能够在应用程序执行期间动态地打开和关闭线程。



 类似资料:
  • 我希望代码检查互联网连接,直到连接可用。如果互联网断开,我不希望执行停止。 关于堆栈溢出,很少有检查internet连接的解决方案,但是如果我使用这些解决方案,一段时间后我会得到堆栈溢出错误。 我从以下函数调用该方法: MessagingException:没有路由到主机:Connect;嵌套异常为:java.net.norouteToHostException:没有到主机的路由:连接在com.s

  • 当我试着检查我的iPhone上的互联网连接时,我得到了一堆错误。有谁能帮我修好这个吗? 代码: 代码中的错误: 如果无法读取,则错误1表示: “int”不能转换为“scNetworkReachabilityFlags” 错误2&3: 找不到接受所提供参数的“init”的重载

  • 问题内容: 如何在JavaScript中检测Internet连接是否离线? 问题答案: 您可以通过发出 失败的XHR请求 来确定连接丢失。 标准方法是 重试 几次 请求 。如果没有通过,请 警告用户 检查连接,然后 正常失败 。 旁注: 将整个应用程序置于“脱机”状态可能会导致很多容易出错的状态处理工作。无线连接可能会来去去等等。因此,最好的选择是妥善地失败,保留数据,并警告用户..允许他们最终解

  • 问题内容: 我正在研究Ionic Framework,并在使用Apache Cordova Network API 来检测AndroidApp中的互联网连接时遇到问题。我参考了本教程,并创建了一个演示项目,该项目运行良好。 我已按照以下步骤操作。[来自教程] 打开 复制粘贴此代码 安装Cordova插件 建立 跑 这很好 问题 从复制粘贴到并执行步骤6和7 我收到警报 之后 复制粘贴这个样子的 当

  • 问题内容: 如何在JavaScript中检测Internet连接是否离线? 问题答案: 您可以通过发出 失败的XHR请求 来确定连接丢失。 标准方法是 重试 几次 请求 。如果未通过,请 警告用户 检查连接,然后 正常失败 。 旁注: 将整个应用程序置于“脱机”状态可能会导致很多容易出错的状态处理工作。无线连接可能会来去去等等。因此,最好的选择是妥善地失败,保留数据,并警告用户..允许他们最终解决

  • 问题内容: 你如何检查是否可以通过Java连接到Internet?一种方法是: 但是是否有更合适的方法来执行该任务,特别是如果你需要经常进行连续检查并且很有可能断开互联网连接时? 问题答案: 你应该连接到实际应用程序需要的地方。否则,你要测试是否与某个无关的地方(在这种情况下为Google)建立了连接。 特别是,如果你要尝试与Web服务进行通信,并且要控制该Web服务,则最好使用某种廉价的“获取状