Обслуживание локального веб-сайта через Bluetooth на мобильный телефон без использования Интернета

Я пытаюсь запустить локальный компьютер через Bluetooth на мобильном телефоне, iPad и других беспроводных устройствах.

Мы хотели бы иметь возможность запускать веб-сайт, размещенный локально на этом сервере, без подключения к Интернету, возможно ли запустить сайт через Bluetooth с сервера на беспроводные устройства.

Сервер может быть не подключен к Интернету, поэтому я хотел бы знать, возможно ли запустить сайт локально, на мобильном телефоне через браузер мобильного телефона, без подключения сервера к Интернету.

Я ценю любую помощь в этом.


person Vesone    schedule 08.05.2012    source источник


Ответы (4)


Да, с помощью некоторых средств, таких как:

  • Используйте Bluetooth-модем в обратном направлении, т. е. телефон считает, что компьютер является его источником сетевого подключения. На компьютере работает не только веб-сервер, но и сервер имен (или в телефоне есть файл hosts), так что имя веб-сайта разрешается в IP-адрес компьютера в сети Bluetooth. Обратите внимание, что телефону, вероятно, потребуется доступ на уровне администратора или существующие возможности для этого.

  • Относитесь к Bluetooth больше как к последовательному соединению. Напишите службу, которая запускается на телефоне и принимает сетевые подключения из браузера на телефоне через петлевой сетевой интерфейс. Затем он отправляет HTTP-запрос по последовательному каналу Bluetooth на ПК, где программа, подобная веб-серверу, принимает их и отвечает по последовательному каналу. Затем служба на телефоне передает их обратно в браузер через сетевой интерфейс обратной связи. Если вас устраивает такой URL-адрес, как http://localhost:8080, для этого не потребуется административный доступ к устройству, а просто возможность запуска фоновая служба, которая может прослушивать сетевые сокеты. Но чтобы избавиться от :8080 и работать на неявном обычном порту 80, по крайней мере, на Android вам потребуется root-доступ.

  • Оберните движок браузера телефона приложением, которое заменяет последовательный доступ через Bluetooth вместо сетевых сокетов. В качестве альтернативы, разверните описанную выше идею службы внутри пользовательского приложения браузера, чтобы вам фактически не приходилось запускать фоновый пакет, а только поток фоновой службы в приложении, которое активно использует пользователь.

  • Купите домашний Wi-Fi роутер и ни к чему не подключайте его WAN-порт. Получите один с достаточным объемом памяти для установки дистрибутива router-linux, и вы даже сможете разместить веб-сайт на этом компьютере и не использовать ПК. Да, это не решение для Bluetooth, просто выбрасываем его для простоты, если есть способ, которым это может быть приемлемо.

person Chris Stratton    schedule 08.05.2012
comment
Спасибо, Крис, этот первый вариант с обратным Bluetooth-модемом, вы знаете ресурс, который я мог бы использовать для этого? Если нет, я ценю помощь, которую вы мне уже оказали. - person Vesone; 08.05.2012
comment
Извините, у меня нет подробностей - это будет сильно зависеть от вашего устройства и операционной системы ПК. Если рассматриваемая мобильная ОС также используется на моделях планшетов без собственных мобильных сетевых радиостанций, вы можете изучить любую поддержку для привязки их к телефону через Bluetooth, а затем попытаться позаимствовать этот метод и использовать его с телефоном, играющим в клиент. роль вместо планшета и ПК в роли провайдера вместо телефона. Лично я предпочел бы блок Wi-Fi, за которым следовала бы служба переводчика tcp-to-bluetooth на устройстве, в порядке убывания простоты. - person Chris Stratton; 08.05.2012
comment
Звучит хорошо, большое спасибо, Крис. Я попробую. Я очень ценю помощь. - person Vesone; 08.05.2012
comment
@ChrisStratton, что касается вашей последней пули, обратите внимание, что многие из этих маршрутизаторов имеют порт USB, к которому вы можете подключить ключи Bluetooth. Я сделал это и могу подтвердить, что это работает нормально. Можно даже подключить несколько ключей Bluetooth и обслуживать большое количество телефонов. - person Tom; 09.05.2012
comment
@ Том, это похоже на то, что я пытаюсь сделать, нам нужно это оборудование для выставки, где у нас будут айфоны, телефоны на базе Android, айпады и т. д. Какие настройки у вас были для нескольких телефонов? - person Vesone; 09.05.2012
comment
@Vesone, несколько телефонов не проблема. Я не могу вспомнить максимальное количество, которое я тестировал, но я думаю, что ключ был в том, чтобы убедиться, что сервер является мастером пикосети, и при необходимости добавить больше ключей. Я использовал несколько обычных маршрутизаторов, но предпочитал платы Alix под управлением Voyage Linux (даже не знаю, доступны ли они еще). Платы Alix имели Wi-Fi 11a в качестве магистрали (придерживаясь 5 ГГц, чтобы не загрязнять пространство Bluetooth). - person Tom; 09.05.2012
comment
Рассматривали ли вы реализацию автономного веб-сайта/веб-приложения html5? Вы настраиваете правильный файл манифеста на своем сервере с правильным типом mime, загружаете страницу входа, и все это кэшируется на устройстве. Затем вы можете остановить сервер или перевести устройства в авиарежим, и они все равно будут работать. - person Chris Stratton; 09.05.2012

Используйте Raspberry Pi с установленной ОС Raspbian Linux. Настройте свой любимый веб-сервер на Pi (Nginx). Настройте Pi как точку доступа Wi-Fi с запущенным hostapd в соответствии с этим: https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software

Это даст вам действительно хороший, недорогой, небольшой веб-сервер с низким энергопотреблением, который транслирует свой собственный WiFi SSID, чтобы вы могли подключить к нему все свои устройства.

Я использовал это, чтобы достичь того, что вам нужно.

person Link Swanson    schedule 29.04.2014
comment
Да, вам нужно выбрать Wi-Fi-ключ с поддержкой инфраструктуры, но в остальном это похоже на решение маршрутизатора и Linux, только на менее ограниченной по ресурсам платформе. - person Chris Stratton; 11.07.2014

Я нашел несколько четких инструкций о том, как это сделать на Mac -> iPhone. Я не знаю как (я спрашиваю "как" в https://superuser.com/questions/1405531/how-does-expressjs-serve-website-over-bluetooth-без-интернета)

У меня есть веб-сайт, обслуживаемый на локальном хосте: 9190 с помощью expressjs. На этом Mac я зашел в Системные настройки. В нем перейдите в раздел «Общий доступ». Включите «Общий доступ к Интернету» от и до Bluetooth PAN. Обратите внимание на сообщение вверху о yourmac.local.

Затем из Системных настроек перейдите в настройки сети. Bluetooth должен появиться с самоназначенным IP-адресом. Нажмите «Дополнительно» и убедитесь, что вы установили для своего IPv4-адреса значение «Вручную». Затем по примеру копирую вставленный набор:

192.168.2.1, подсеть 255.255.255.0 и в поле адреса маршрутизатора 192.168.2.1, укажите DNS как 8.8.8.8 и второй dns 8.8.4.4.

Я подключил свой телефон к Mac и из сафари перешел к http://yourmac.local:9190/ и подключился нормально.

person Dave Stein    schedule 14.02.2019

Если вы разрабатываете веб-приложение, доступ к которому осуществляется через локальный хост (например, angular, express и т. д.), и хотите получить к нему доступ на своем мобильном устройстве, одним из вариантов является обратно привязать ваше устройство, чтобы ваш планшет/ телефон получает доступ в Интернет через ваш компьютер через Bluetooth PAN.

После подключения устройства вам потребуется найти IP-адрес вашего компьютера в размещенной (Bluetooth) сети. Чтобы найти это, откройте приложение терминала, введите ifconfig и найдите адрес inet в конфигурации bridge100, например. в четвертой строке этой ifconfig записи:

bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether f6:0f:24:22:ea:64
    inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
    inet6 fe80::f04f:2f4f:ef22:ae64%bridge100 prefixlen 64 scopeid 0x10
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x2
    member: en6 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 15 priority 0 path cost 0
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active

Когда у вас есть IP-адрес вашего компьютера в сети Bluetooth (в данном случае 192.168.2.1), откройте браузер вашего мобильного устройства и загрузите http://192.168.2.1:1234/, где `1234 заменен на порт, который прослушивает ваш сервер (например, 4200 для Angular и т. д.) .

Специальное примечание для AngularJS: по умолчанию команда ng serve прослушивает только «localhost: 4200», который недоступен для других устройств в вашей сети. Для Angular вам нужно запустить сервер с хостом, указанным следующим образом: ng serve -host 0.0.0.0

person Jthorpe    schedule 25.03.2017
comment
можно ли сделать что-то подобное тому, что вы написали, с малиной? я имею в виду веб-сервер/веб-сервис на малине, соединение bt, устройство Android через браузер или приложение, которое подключается к этому веб-сервису - person andymnc; 31.05.2018
comment
@andymnc, отличный вопрос, но я не разрабатывал малину уже пару лет. если вы найдете решение, я был бы заинтересован в ответе! - person Jthorpe; 31.05.2018
comment
Я могу нормально пинговать IP, но открытие сайта с url:port не дает результатов и загружается бесконечно. - person Qwerty; 17.01.2020