【问题标题】:No connection could be made because the target machine actively refused it. - connect(2)由于目标机器主动拒绝,无法建立连接。 - 连接(2)
【发布时间】:2013-04-19 07:52:30
【问题描述】:
require 'watir-webdriver'    
begin
  url='http://localhost/test/test.php'
  ie =Watir::Browser.new:chrome
  ie.goto url
rescue Timeout::Error
  puts "time out"
  ie.close
  retry
end

这是我的 php 文件:http: //localhost/test/test.php

<?php 
set_time_limit(90);
sleep(60);
echo "hello"
?>

输出->超时,之后报错:

Errno::ECONNREFUSED(无法建立连接,因为目标机器主动拒绝了它。- connect(2))。

基本上它应该在超时后关闭ie然后再次打开ie等等

【问题讨论】:

  • 如果将浏览器指向 localhost/test/test.php 会发生什么?
  • 它应该打印超时然后关闭浏览器,然后从头开始重试。
  • 为什么?这一定是我见过有人尝试自动化的最奇怪的事情之一
  • 解决这个问题的方法是什么?

标签: ruby watir watir-webdriver


【解决方案1】:

当您尝试连接到任何盒子时,可以通过多种方式处理连接。如果您有防火墙阻止连接,它可以 DROP(如 netfilter 的 DROP 目标)或 REJECT 传入连接。

区别:

  • DROP 表示传入的数据包被丢弃(如在地板上)。目标没有回复。源没有得到关于数据包发生了什么的任何信息。它只能做出假设,但不能肯定地说数据包没有在途中被网络组件吞下。
  • REJECT 意味着对于传入的数据包(如打开连接的 SYN 请求)将生成一个回复,说明在目标服务器的端口上没有应用程序正在侦听。这意味着数据包已到达目的地并已成功处理(解释),但没有应用程序可以控制该数据包。

你得到连接被拒绝,这意味着目标回复了,但说连接不能或不会建立(主动拒绝)。预期的超时仅在目标机器没有应答并丢弃数据包时发生。

您可以看到here 连接是如何建立和建立或拒绝的。

【讨论】:

  • 删除阻止数据包通过的防火墙,或者您可能需要在本地主机上添加提供 HTTP 的服务。
  • 删除防火墙没有帮助。
【解决方案2】:

这可能不是服务员的问题。从这个答案(https://stackoverflow.com/a/2972662/131051

如果这种情况总是发生,它的字面意思是机器 存在,但它没有侦听指定的服务 端口,或者有防火墙阻止你。

【讨论】:

    猜你喜欢
    • 2013-05-18
    • 2018-12-01
    相关资源
    最近更新 更多