首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby:检查本地端口是否正在侦听

Ruby:检查本地端口是否正在侦听
EN

Stack Overflow用户
提问于 2015-12-20 03:39:42
回答 1查看 966关注 0票数 1

如果本地端口正在侦听或空闲,我想实现在ruby中检查。需要的脚本返回代码在空闲端口的情况下是0和在端口被占用(侦听)的情况下返回代码是1

这里重要的是端口是本地的,而不是远程的!对于远程端口,我找到了这个解决方案:Ruby - See if a port is open

我已经尝试过这个脚本:

代码语言:javascript
运行
复制
ruby -e " 
    require 'socket' ; 
    server=TCPServer.new(25) ; 
    if server==nil ; 
        return 1 ; 
    else server.close ; 
    end 
"

在空闲端口时返回"0“,在端口被占用时返回”0

代码语言:javascript
运行
复制
-e:1:in `initialize': no implicit conversion of nil into String (TypeError)
        from -e:1:in `new'
        from -e:1:in `<main>'

那么如何改正这行脚本呢?

EN

回答 1

Stack Overflow用户

发布于 2015-12-20 04:37:29

尝试:

代码语言:javascript
运行
复制
ruby -e "require 'socket';
begin
  sock = Socket.new(Socket::Constants::AF_INET, Socket::Constants::SOCK_STREAM, 0);
  sock.bind(Socket.pack_sockaddr_in(YOUR_PORT_HERE, '0.0.0.0'));
  exit(0);
rescue Errno::EADDRINUSE;
  exit(1);
end"

(如果需要,请用实际端口号替换YOUR_PORT_HERE,并删除换行符)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34374625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档