首页 > 解决方案 > 如何将主机名添加到 LAN 以便 Ruby Web 服务器(例如 WEBrick)可以使用该主机名?

问题描述

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

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

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

标签: rubywebserverlanhostnamewebrick

解决方案


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

hosts文件是一种告诉特定计算机它知道哪些地址的方法。您编辑文件,输入对应 IP 地址的名称,当该计算机向其中一个名称发出请求时,它就知道该联系谁。由于您需要将记录保存在客户端计算机中,因此您无法在服务器上进行任何操作来影响它,这就是为什么再摆弄 Ruby 或 WEBrick 也无济于事的原因。此外,iPhone 没有hosts您可以编辑的文件。

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

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

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


推荐阅读