使用 Timeout::timeout(n) 缩短套接字超时似乎对我不起作用

2023-12-08

我发现我认为应该完美地工作https://stackoverflow.com/questions/517219?tab=oldest#tab-top但是,它对我不起作用。

我在 Windows 上安装了 Ruby 1.9.1,当我尝试示例“is_port_open”测试时,它不起作用。无论我为超时设置什么值,套接字调用仍然需要大约 20 秒才能超时。有什么想法吗?


以下代码似乎适用于 Windows 上的 ruby​​ 1.9.1:

require 'socket'

def is_port_open?(ip, port)
  s = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
  sa = Socket.sockaddr_in(port, ip)

  begin
    s.connect_nonblock(sa)
  rescue Errno::EINPROGRESS
    if IO.select(nil, [s], nil, 1)
      begin
        s.connect_nonblock(sa)
      rescue Errno::EISCONN
        return true
      rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
        return false
      end
    end
  end

  return false
end

我还没有弄清楚为什么原始的 is_port_open?() 代码不能在带有 ruby​​ 1.9.1 的 Windows 上运行(它可以在其他操作系统上运行)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Timeout::timeout(n) 缩短套接字超时似乎对我不起作用 的相关文章

  • 对卡在 CLOSE_WAIT 状态的连接进行故障排除

    我有一个在 Windows 上的 WebLogic 11g 中运行的 Java 应用程序 几天后它变得没有响应 我注意到的一个可疑症状是大量连接 大约 3000 个 出现在netstat即使服务器空闲 也具有 CLOSE WAIT 状态 由
  • Rspec to have(n).items undefined 方法

    我正在尝试遵循指南关于代码 tuts http code tutsplus com tutorials ruby for newbies testing with rspec net 21297我不断收到错误 这是我的库规范 require
  • UDP SocketException - 通常只允许每个套接字地址使用一次

    尽管这里有很多非常相似的问题 但提供的答案都没有帮助我 这让我很难过 我有一个非常大的管理系统 我的任务是为其编写一些 UDP 数据包发送 接收 我已经编写了一个原型 一切都很好 所以我开始将我的代码合并到所述系统中 然而 我现在弹出了一个
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该
  • Ruby 的 Faraday - 多次包含相同的参数

    我正在使用一个 API 该 API 迫使我多次发送相同的参数名称以级联不同的过滤条件 因此 示例 api GET 调用如下所示 GET http api site com search a b1 a b2 a b3 a c2 我使用 Far
  • 从物理上来说,套接字是什么?

    我总是更喜欢编程概念的物理含义而不是其逻辑含义 那么这个问题就来了 当我回顾套接字编程范例时 我注意到bind 连接 函数所做的就像tuning由创建的套接字socket 功能 所以我想那是什么socket 函数所做的只是创建一个数据结构
  • 将“Authorization Bearer”哈希添加到 Net::HTTP post 请求 (Ruby)

    我怎样才能添加Authorization Bearer到 POST 请求Net HTTP 我只能在文档中找到 基本身份验证 的帮助 req basic auth user pass Source https docs ruby lang o
  • 从 Jekyll 插件向页面添加属性

    假设我想要一个包含如下内容的页面 h1 page comment count Comment s h1 for c in page comment list div strong c title strong br c content di
  • 一对一的DataMapper关联

    我对 DataMapper 非常陌生 我正在尝试为以下场景创建模型 我有许多用户 有用户名 密码等 他们也可以是玩家或裁判员或两者兼而有之 因此单表继承不是一个选项 基本模型是 class User include DataMapper R
  • 带有 @global gem 的 Ruby/RVM - 捆绑包运行失败并显示“require”:无法加载此类文件 - 捆绑器 (LoadError)

    我学习了linux 1个月 当我试图使所有步骤从在 Heroku 上从 MySQL 迁移到 Postgres https devcenter heroku com articles heroku mysql我遇到了一个无法处理的错误 当我尝
  • 何时使用node.js、sinatra、rails? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这 3 种语言 框架的最佳用途是什么 混合所有 或 2 个 有用吗 如果您正在构建一个完整的 Web 应用程序 您可能应该使用 Rails 因为
  • Ruby 在 Windows 上找不到 sqlite3 驱动程序

    我正在尝试在 Windows 上设置 Ruby on Rails 我正在使用看起来不错的 Flash Rails 发行版 但是 sqlite3 有一个问题 我发现线程告诉我安装版本 1 2 3 安装得很好 我使用的是 ruby 1 9 0
  • 设置一个带有 JQuery 掩码的文本字段

    使用 watir webdriver 我尝试设置文本字段的值 browser text field id phoneNumbers value input set 5555551234 当我运行该命令时 我可以看到 watir 找到了该字段
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • 为 Rails 上的 postgresql 创建用户

    我选择 postgresql 作为我的 Rails 数据库 但当我尝试运行 rake db create all 时 我遇到了一个明显常见的错误 即 致命 角色 app 不存在 我找到了两种解决方案 但我不确定哪一种是正确的 有一个网站说
  • 如何使用 select 将数据从服务器发送到客户端

    我在一些教程的帮助下想出了一个代码 用于使用选择功能与客户端连接并接受来自客户端的消息 现在我想做的是在服务器需要时将数据发送到特定的客户端 如何做到这一点 提前致谢 服务器代码 include
  • Gem 在 irb 中可用,但在 Rails 控制台中不可用

    我正在尝试在我的 Rails 项目中使用 RedCloth gem 当我使用irb我可以加载宝石 require rubygems require RedCloth 它工作正常 但是当我在 Rails 控制台中尝试相同的操作时 我收到一条错
  • 查找 Rails 应用程序中未使用的代码

    如何查找正在运行和未运行的代码生产中 该应用程序经过充分测试 但还有很多测试unused代码 因此 他们在运行测试时得到覆盖 我想重构并清理这个烂摊子 它一直在浪费我的时间 我有很多后台工作 这就是为什么我希望生产环境来指导我 在 Hero
  • Rails:Passenger Standalone 适合生产部署吗?

    问题标题几乎概括了这一点 我找不到任何好的资源来概述使用 Phusion Passenger Standalone 进行 Rails 应用程序部署的优点 缺点 它与运行 Passenger Nginx 或 Passenger Apache

随机推荐

  • 根据邮政编码确定 USPS 邮政区域的公式

    我希望能够更轻松地按 USPS 邮区对数百个信封进行分类 困难在于必须根据原始邮政编码对美国 8 个区域中的每一个区域进行手动排序 91352 http postcalc usps gov ZoneCharts 我有一个包含 ZIP 列的联
  • 对 ? 的行为感到困惑。操作员

    这是我的代码 class Address public bool IsAppartment get set class Employee public string Name get set public Address Address g
  • 关闭选项卡前确认框

    我希望当用户尝试关闭窗口时有一个确认框 window onbeforeunload function evt var message Are you sure you want to leave cause there are some u
  • HTML5 输入模式中的正则表达式无效

    我需要在 HTML 输入中使用这个正则表达式 取自以逗号或逗号和空格分隔的项目列表的正则表达式 s s 所以我将其设置为输入
  • 如何触发 Chrome 扩展按钮的点击?

    我正在建立一个自动化测试套件使用 Selenium Web 驱动程序 在某个时刻 我必须通过以下方式测试页面的工作方式 Chrome 扩展程序打开或关闭 可以将其想象为您想要单击 Adblock 扩展 然后单击对此站点的禁用 然后 再次打开
  • g++ -fdump-class-hierarchy 输出中的第一个 (int (*)(...))0 vtable 条目是什么?

    对于这段代码 class B1 public virtual void f1 class D public B1 public void f1 int main B1 b1 new B1 D d new D return 0 编译后 我得到
  • 使用 CloudWatch Metric Filter 报告内存消耗百分比

    我们广泛使用 AWS Lambda 作为我们基础设施的一部分 为了获得更好的可见性 我希望能够报告一个自定义的 CloudWatch 指标 其值为内存已使用 内存分配 这可以使用 CloudWatch 日志和指标过滤器来实现 考虑以下日志消
  • 当我调用代码格式化程序时,如何避免扩展折叠区域?

    如您所知 Delphi 2010 具有内置代码格式化功能 但是 格式化会展开所有折叠的代码块 有什么想法如何修复它吗 这个 功能 对我来说特别烦人 当我找不到任何关于这个问题的提及时 我真的很惊讶 我尝试过的 寻找替代方案 例如 GExpe
  • 检查所有复选框 Jquery

    我使用此代码来检查树视图中的复选框 HTML div ul li li ul div
  • 如何从Around Advise获取调用者方法信息

    ThisJoinPoint只能获取当前方法信息 反正要获取调用者方法信息 您可以尝试特殊变量thisEnclosingJoinPointStaticPart它保存封闭 JoinPoint 的静态部分 提及here 示例 和here docs
  • 如果更改索引中使用的字段,mongodb 是否会重新索引?

    假设您有一个带有名为 primary key 字段的集合 primary key 1234 name jimmy lastname page 我有一个关于 primary key 的索引 这个集合有数百万行 我想看看更改其中一条记录的pri
  • 如何以编程方式设置文件标签

    当使用 Windows 资源管理器查看文件时 我可以选择设置 标签 类别 或其他属性 对于 JPEG 可以选择一组不同的属性 包括 标签 我希望能够以编程方式设置这些 如何使用 Delphi 以编程方式设置文件标记和其他文件属性 我有 De
  • 如何在 Jupyter 笔记本上从 * .IPYNB 文件执行 * .PY 文件?

    我正在开发一个 Python Notebook 我想要这样大输入代码 输入 打包成 PY 文件并从笔记本中调用该文件 运行 的动作我知道笔记本中的 PY 文件 并且命令在 Linux 或 Windows 之间有所不同 但是 当我执行此操作并
  • 如何移出 IntelliJ IDEA 中自动完成的括号(不使用箭头键)?

    我最近从 Eclipse 切换到 IntelliJ IDEA 并发现自己想知道如何将光标移出一对自动完成的括号 在 Eclipse 中 当我输入完一对括号后 按 Tab 键将使我退出括号 不使用箭头键如何做同样的事情 非常感谢您的帮助 ID
  • 使用 htaccess 创建 SEO 友好的 url

    我正在尝试重写网站的 url 我应该提到的是 index php 现在的工作方式是获取 p 页面 参数并包含适当的文件 所以请求一个页面是这样的 www domain com index php p home www domain com
  • 在 Camera2 API 中切换闪光灯

    我的问题是 当我在不同的 Flash 模式之间切换然后想要捕获图像时 我的 captureBuilder 不会设置所选的 Flash 模式 仅当我关闭并重新打开相机时它才有效 我拿了https github com googlesample
  • 如何安全删除旧的 InnoSetup 安装?

    我使用 InnoSetup 5 5 1 a 来安装 Delphi 6 软件 一位用户刚刚告诉我 如果不手动卸载 旧的卸载条目会堆积在控制面板的删除程序列表中 我正在考虑更改我的安装以自动删除旧条目 但我不想删除有效的旧条目 一些用户喜欢保留
  • 在特定内存地址创建新的 C++ 对象?

    C 是否可以在特定内存位置创建新对象 我有一块共享内存 我想在其中创建一个对象 这可能吗 你要放置new 它基本上使用现有内存块调用构造函数 而不是从堆中分配新内存 Edit 确保您理解有关负责为使用放置创建的对象显式调用析构函数的说明ne
  • 如何使 git log 输出只在一行上显示日期和哈希值?

    我需要以这种格式获取一组 github 的日期和提交结果 Date Commit 19 Mar 2015 b6959eafe0df6031485509c539e22eaf2780919c 1 Apr 2015 9a1f13339cc7d43
  • 使用 Timeout::timeout(n) 缩短套接字超时似乎对我不起作用

    我发现我认为应该完美地工作https stackoverflow com questions 517219 tab oldest tab top但是 它对我不起作用 我在 Windows 上安装了 Ruby 1 9 1 当我尝试示例 is