【问题标题】:How to add a hostname to the LAN so that a Ruby web server, such as WEBrick can serve off that hostname?如何将主机名添加到 LAN 以便 Ruby Web 服务器(例如 WEBrick)可以使用该主机名?
【发布时间】:2020-01-30 03:20:54
【问题描述】:

我们可以使用 Ruby 和 WEBrick 来启动本地 Web 服务器,只需通过

ruby -run -e httpd -- -p 8080 .

我看到一些 iPhone / iPad 应用程序能够在 LAN 上添加主机名 http://awesome.local:1234,因此本地 Mac 和其他计算机可以连接到它。我们如何使用 Ruby 来做到这一点,添加主机名并将其添加到一起,如果可能的话,使用 WEBrick?

【问题讨论】:

    标签: ruby webserver lan hostname webrick


    【解决方案1】:

    不可能用 Ruby 做任何事情来做到这一点,因为这不是 Ruby 的问题。计算机以两种不同的方式处理主机名到 IP 地址的转换:hosts 文件和 DNS 查询。

    hosts file 是一种告诉特定计算机它知道哪些地址的方法。您编辑文件,输入对应 IP 地址的名称,当该计算机向其中一个名称发出请求时,它知道该联系谁。由于您需要在 client 的 计算机中拥有记录,您无法在 server 上做任何事情来影响它,这就是为什么不用再摆弄 Ruby 或 WEBrick会有所帮助。此外,iPhone 没有可以编辑的hosts 文件。

    当计算机不知道名字时,它会询问知道的人。这个人是DNS server,一种用于计算机的智能黄页。您的计算机有一个配置为使用的 DNS 服务器;如果它不知道,它将向其他 DNS 服务器询问信息。值得注意的是,您 LAN 的路由器几乎肯定具有 DNS 功能。

    因此,做你想做的事情的正常方法是告诉你的路由器当被问及awesome.local时它应该告诉每个人哪个地址。如何做到这一点对于 Stack Overflow 来说是题外话(因为它不是编程问题;您可以在 SuperUser 上提问),并且在不知道您的路由器的确切品牌和型号的情况下无法回答。

    编辑:鉴于您的示例涉及 iOS 设备,还有另一个答案::Apple 设备使用 Bonjour 互相喊出自己的配置数据。不是应用程序在做,而是 iOS。您可以在大多数其他操作系统上安装 Bonjour。还有一个实现 Bonjour 协议的 Ruby gem,dnssd。我没有使用它,所以我不能告诉你它是否能解决你的问题。

    【讨论】:

    • 但是 iPhone 应用程序怎么能做到呢?
    • 很容易,如果本地 DNS 服务器(它当时连接到的 WiFi 路由器,或路由器配置为咨询的服务器)按照我描述的方式配置。
    • 所以如果 iPhone 应用可以做到,那么 Ruby 也应该可以做到
    • 啊,我明白你在问什么,抱歉。还有第三种可能,我来编辑一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 2015-08-07
    • 2022-06-15
    • 2020-03-27
    • 2012-09-15
    • 2016-03-24
    相关资源
    最近更新 更多