【问题标题】:how can i check if a proxy is alive or not in JAVA我如何检查代理是否在 JAVA 中处于活动状态
【发布时间】:2015-07-25 01:59:24
【问题描述】:

我正在创建一个“机器人”打开一个带有从 file.txt 获得的随机代理的页面,但我想在使用它们之前先检查代理是否存在。

我不会在这里放任何代码,因为如果有人有简单的方法来完成这项任务,我只会发出请求。

我阅读了有关InetSocketAddress 的信息,但我遇到的问题是我只能将它与(String Host, Int port) 一起使用。如何在一个简单的字符串中一起传递 Host+port

如果这不是解决方案,谁能解释我另一种方法?

【问题讨论】:

  • 为什么您认为需要将host:port 作为单个字符串传递?
  • 因为它直接来自一个文件txt,就像一个带有主机和端口的字符串:657.56.348.23:8080
  • 把它分成两个参数的问题是什么?
  • 我必须从两个文件中读取,并且这些文件不会同时同步。

标签: java sockets proxy


【解决方案1】:

此方法无效。

测试任何资源是否可用的唯一可行方法是尝试在程序的正常过程中使用它,如果失败则处理错误。

否则,您将参与预测未来。测试时可能会上升,使用时可能会下降。或者反过来。或者,您可能会以不同于您将如何使用它的方式对其进行测试,从而再次获得不同的结果。

【讨论】:

    【解决方案2】:

    我读到了“InetSocketAddress”...

    如果您要测试代理,这是一种方法。 (只需测试您是否可以打开到代理的 TCP/IP 连接,然后将其关闭)。另一种方法是使用文本页面设置您自己的小型网络服务器,并通过使用它访问您的测试页面来测试代理。 (这可以更准确地“读取”代理的活跃度。)

    ...但我有一个问题,我只能(字符串主机,Int 端口)我如何才能以简单的字符串传递主机+端口?

    这很容易。你没有。

    您需要解析字符串并提取主机名和端口号。 (Java 101 的东西......)然后将它们作为单独的参数传递。

    如果“字符串”实际上是一个URL或URI,那么你可以使用java.net.URI进行解析。


    但是,还有另一种方法。不要测试代理。只需使用它,如果它没有响应,则将其标记为不良。

    IMO,您几乎必须采用这种方法来使您的代码更加健壮。如果您探测一个代理并发现它在时间 T 是可访问的并且正在工作,则不能保证它在时间 T + 1 仍然工作。再多的测试也无法解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-11
      • 2019-12-10
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      相关资源
      最近更新 更多