ruby - 如何将主机名添加到 LAN 以便 Ruby Web 服务器(例如 WEBrick)可以使用该主机名?
问题描述
我们可以使用 Ruby 和 WEBrick 来启动本地 Web 服务器,只需
ruby -run -e httpd -- -p 8080 .
我见过一些 iPhone / iPad 应用程序能够在 LAN 上添加主机名http://awesome.local:1234,因此本地 Mac 和其他计算机可以连接到它。我们如何使用 Ruby 来做到这一点,添加主机名并将其添加到一起,如果可能的话,使用 WEBrick?
解决方案
用 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。我没有使用它,所以我不能告诉你它是否能解决你的问题。
推荐阅读
- python - 需要帮助将 str 日期转换为 datetime64 pandas python
- .net - 在 Windows 窗体 .NET 中安装已发布应用程序的最低要求是什么?
- javascript - 嵌套在数组中的对象中的列表反应
- android - 在非活动时间以特定间隔与服务器同步
- google-my-business-api - 从 Google My Business REST API 读取评论时出错
- postgresql - 了解 Postgres work_mem、maintenance_work_mem 和 temp_buffers 分配
- client - 使用不同于 445 的端口进行 Samba 通信
- php - 我该如何解决这个问题 PHP 谁能帮助我
- npm - 创建 Azure Pipeline 以将 Angular 代码上传到 s3 存储桶时出错
- php - 使用 PREG_SPLIT 分割星期字符串 MTWTHFSSU