22

我正在尝试通过手机、ipad 和其他无线设备上的蓝牙运行本地计算机。

我们希望能够在不连接到互联网的情况下在此服务器上运行本地托管的网站,是否可以通过从服务器到无线设备的蓝牙运行该站点。

服务器可能没有连接到互联网,所以我想知道是否可以通过手机浏览器在手机上本地运行该站点,而无需将服务器连接到互联网。

我很感激这方面的任何帮助。

4

4 回答 4

11

是的,通过某些方式,例如:

  • 向后使用蓝牙网络共享 - 即手机认为计算机是它的网络连接源。计算机不仅运行网络服务器,还运行名称服务器(或手机有主机文件),以便网站名称解析为蓝牙网络上计算机的 IP 地址。请注意,电话可能需要管理员级别的访问权限或现有功能。

  • 将蓝牙更像是串行连接。编写一个在手机上运行的服务,并通过环回网络接口接受来自手机浏览器的网络连接。然后,它通过蓝牙串行链接将 http 请求发送到 PC,其中类似 Web 服务器的程序接受它们并通过类似串行的通道进行响应。然后,电话上的服务通过环回网络接口将这些返回给浏览器。如果您对诸如http://localhost:8080之类的 URL 感到满意,则不需要对设备进行管理访问,而只需要运行可以侦听网络套接字的后台服务的能力。但是要摆脱 :8080 并在隐式常用端口 80 上运行,至少在 Android 上,您需要 root 访问权限。

  • 将手机的浏览器引擎封装在一个应用程序中,该应用程序用蓝牙上的类似串行访问来代替网络套接字。或者,以这种方式在自定义浏览器应用程序中部署服务理念,这样您实际上不必运行后台包,而只需运行用户正在使用的应用程序中的后台服务线程。

  • 购买家用wifi路由器,不要将其WAN端口连接到任何东西。买一个有足够内存的路由器来安装一个路由器 Linux 发行版,你甚至可以在那个盒子上托管网站,而把 PC 放在外面。是的,这不是蓝牙解决方案,只是为了简单起见,如果有一种可以接受的方法,就将它扔在那里。

于 2012-05-08T16:56:09.310 回答
5

使用安装了 Raspbian Linux 操作系统的 Raspberry Pi。在 Pi (Nginx) 上配置您最喜欢的 Web 服务器。根据以下内容将 Pi 配置为运行 hostapd 的 WiFi 接入点:https ://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software

这将为您提供一个非常好的、便宜的、低功耗的小型网络服务器,它可以广播自己的 WiFi SSID,供您连接所有设备。

我用它来实现你所追求的。

于 2014-04-29T16:00:02.123 回答
2

我想出了一些关于如何在 Mac -> iPhone 上完成此操作的明确说明。我不确定如何(我在https://superuser.com/questions/1405531/how-does-expressjs-serve-website-over-bluetooth-without-internet中询问“如何” )

我有一个使用 expressjs 在 localhost:9190 上提供的网站。在那台 Mac 上,我去了系统偏好设置。在其中,转到共享。在蓝牙 PAN 之间打开“Internet 共享”。请注意顶部的消息 about yourmac.local

然后从系统偏好设置中,转到您的网络设置。蓝牙应该会弹出一个自分配的 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,然后从 safari 连接到http://yourmac.local:9190/并正常连接。

于 2019-02-14T04:29:43.910 回答
0

如果您正在开发一个通过 localhost(即 angular、express 等)访问的网络应用程序并希望在您的移动设备上访问它,一种选择是反向绑定您的设备,以便您的平板电脑/手机通过您的计算机通过蓝牙 PAN。

连接设备后,您需要在托管(蓝牙)网络上找到您计算机的 IP 地址。要找到它,请打开终端应用程序,然后键入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 地址后(192.168.2.1在这种情况下),打开移动设备的浏览器并加载http://192.168.2.1:1234/其中的 `1234 替换为服务器正在侦听的端口(即 Angular 的 4200 等)。

AngularJS 的特别说明:默认情况下,该ng serve命令只侦听“localhost:4200”,您网络上的其他设备无法访问。对于 Angular,您需要使用指定的主机启动服务器,如下所示:ng serve -host 0.0.0.0

于 2017-03-25T22:36:35.897 回答