Ruby:将监听套接字绑定(bind)到特定接口(interface)

标签 ruby

我想创建一个只监听特定接口(interface)(比如 eth0)的 TCP 套接字。我怎样才能做到这一点?我试过浏览 Socket API,但我可能没有正确理解。

到目前为止,这是我的监听方法:

def listen
  socket = TCPServer.open($port)
  while $looping do
    Thread.start(socket.accept) do |server|
      response = server.read
      puts "Command received: #{response}"
      if sanitize(response)
        execute(response)
      end
    end
  end
end

感谢您的帮助。

最佳答案

您需要获取要监听的网络接口(interface)的 IP,并将其作为第一个参数传递给 TCPServer.new。 .除了解析 %x(ifconfig <interface> | grep inet) 的输出外,我没有办法按名称指定接口(interface)。 .

关于Ruby:将监听套接字绑定(bind)到特定接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3302978/

相关文章:

regex - Ruby - 正则表达式允许 URL 中包含任何非 ASCII 中文字符

ruby - 使用 TCPServer 的 Ruby 中的简单 HTTP 服务器

mysql - 如何通过 Rails 迁移减少存在值的 MySQL 列的 varchar?

ruby - Vagrant with Chef - 配置 VM 时出错

ruby-on-rails - 无法绕过 OpenSSL 验证 - 证书验证失败 (OpenSSL::SSL::SSLError)

ruby - 在 Ruby 中生成随机数有多昂贵?

ruby-on-rails - Oauth 2 "redirect_uri_mismatch: { "错误”: "redirect_uri_mismatch" }"in rails

ruby-on-rails - 如何在 Ruby 中推送数组中的元素?

Ruby:除非与如果不是

html - 在没有 jekyll/本地服务器的情况下运行 jekyll 生成的文件?