Как добавить имя хоста в локальную сеть, чтобы веб-сервер Ruby, такой как WEBrick, мог обслуживать это имя хоста? - PullRequest
0 голосов
/ 30 января 2020

Мы можем использовать Ruby и WEBrick для запуска локального веб-сервера, просто

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

Я видел, как в некоторых приложениях iPhone / iPad можно было добавлять имя хоста http://awesome.local: 1234 в локальной сети, поэтому локальный Ма c и другие компьютеры могут подключаться к нему. Как мы можем сделать это, используя Ruby, добавив имя хоста и добавив его вместе, если возможно, с WEBrick?

1 Ответ

0 голосов
/ 30 января 2020

Невозможно что-либо сделать с Ruby, чтобы сделать это, потому что это не проблема Ruby. Компьютеры имеют дело с преобразованием имен хостов в IP-адреса двумя различными способами: hosts файл и запрос DNS.

hosts файл - это способ указать конкретный c компьютер, о каких адресах он знает. Вы редактируете файл, указываете, какое имя соответствует какому IP-адресу, и когда этот компьютер отправляет запрос на одно из этих имен, он знает, с кем связаться. Поскольку у вас должна быть запись на компьютере клиента , на сервере вы ничего не можете сделать, чтобы повлиять на нее, поэтому нет необходимости возиться с Ruby или WEBrick помогу. Кроме того, в iPhone нет файла hosts, который можно редактировать.

Когда компьютер не знает имени, он спрашивает кого-то, кто знает. Этот человек - DNS-сервер , своего рода умные Желтые страницы для компьютеров. На вашем компьютере есть DNS-сервер, с которым он настроен для работы; если он не знает, он запросит информацию у других DNS-серверов. Примечательно, что маршрутизатор вашей локальной сети почти наверняка имеет функции DNS.

Таким образом, обычный способ сделать то, что вы хотите, это сообщить вашему маршрутизатору, какой адрес он должен сообщить всем, когда его спросят о awesome.local. Как это сделать, это не так: c для переполнения стека (так как это не проблема программирования; вы можете задать вопрос SuperUser ), и невозможно ответить, не зная точную марку и модель вашего router.

EDIT: Учитывая, что в вашем примере используется устройство iOS, есть другой ответ:: устройства Apple используют Bonjour , чтобы выкрикивать свои собственные данные конфигурации друг на друга. Это не приложение, это iOS. Вы можете установить Bonjour в большинстве других операционных систем. Также существует гем Ruby, который реализует протокол Bonjour, dnssd . Я не работал с ним, поэтому я не могу сказать вам, решит ли он вашу проблему.

...