我正在尝试通过手机,ipad和其他无线设备上的蓝牙运行本地计算机。
我们希望能够在没有连接到互联网的情况下运行本地托管在此服务器上的网站,是否可以通过蓝牙从服务器到无线设备运行该网站。
服务器可能没有连接到互联网,所以我想知道是否可以通过手机浏览器在手机上本地运行网站,而无需将服务器连接到互联网。
我感谢任何帮助。
答案 0 :(得分:8)
是的,通过某些方式,例如:
向后使用蓝牙网络共享 - 也就是说,手机认为计算机是网络连接的来源。计算机不仅运行Web服务器,还运行名称服务器(或手机具有主机文件),以便网站名称解析为蓝牙网络上计算机的IP地址。请注意,手机可能需要管理员级别的访问权限或现有功能。
将蓝牙视为串行连接。编写一个在手机上运行的服务,并通过环回网络接口接受来自手机浏览器的网络连接。然后,它通过蓝牙串行链路将http请求发送到PC,其中类似Web的服务器程序接受它们并通过类似串行的通道进行响应。然后,电话上的服务通过环回网络接口将这些服务提供给浏览器。如果您满足于诸如http://localhost:8080之类的URL,则不需要对设备进行管理访问,而只需要能够运行可以侦听网络套接字的后台服务。但要摆脱:8080并在隐含的通常端口80上运行,至少在Android上你需要root访问权。
将手机的浏览器引擎包裹在一个应用程序中,该应用程序用蓝牙代替网络套接字替代类似串行的访问。或者,在自定义浏览器应用程序内部以这种方式部署服务构思,这样您实际上不必运行后台程序包,而只需要在用户正在使用的应用程序中运行后台服务线程。
< / LI>购买家庭wifi路由器,不要将它的WAN端口连接到任何东西。获得一个有足够内存的人来安装路由器 - Linux发行版,你甚至可以在那个盒子上托管网站,让PC离开它。是的,这不是一个蓝牙解决方案,如果有一种可以接受的方式,只是为了简单而折腾它。
答案 1 :(得分:3)
使用安装了Raspbian Linux OS的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,以便将所有设备连接到。
我用它来实现你的目标。
答案 2 :(得分:0)
如果您正在开发通过localhost访问的网络应用程序(即角度,快递等),并希望在您的移动设备上访问它,则可以选择reverse tether您的设备,以便您的平板电脑/ phone通过蓝牙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
答案 3 :(得分:0)
我想出了一些明确的说明,说明如何在Mac-> iPhone上完成此操作。我不确定如何操作(我正在询问https://superuser.com/questions/1405531/how-does-expressjs-serve-website-over-bluetooth-without-internet中的“操作方法”)
我有一个通过expressjs在localhost:9190上服务的网站。在那台Mac上,我进入了“系统偏好设置”。在其中,转到共享。在“蓝牙共享”和“蓝牙共享”之间打开“ Internet共享”。记下有关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/
,并且连接正常。