我的电脑上有一个应用程序在 127.0.0.1:3000 上运行
我想从连接到同一网络的 iPhone 访问该应用程序。我以前这样做过,但不知道怎么做。有什么想法吗?
答案1
首先,您需要确定运行 Web 服务器的计算机的 IP 地址或名称。我假设您在 Mac 上运行 Web 服务器,因为您标记了您的帖子macosx
,尽管 Linux 计算机的说明类似。因此,在您的 Mac 上:
- 打开
Terminal.app
。它在 下方Applications->Utilities
。 - 在终端中运行
ifconfig
。这会显示机器上的所有网络接口。其中一个是您的机器主动连接的网络。如果您的 Mac 使用的是有线连接,则应该是en0
。记下后面的地址inet
- 这应该是您的机器使用的地址。- 假设您发现它是 192.168.10.1。
- 验证您是否可以从您的服务器连接到该地址
nc -v 192.168.10.1 3000
。(将 3000 替换为您的应用程序正在运行的端口)- 您应该会看到类似的消息
Connection to 192.168.10.1 3000 port [tcp/http] succeeded!
。 - 如果这不起作用,请参见下文。
- 如果确实有效,请点击
ctrl-C
退出 nc 会话。
- 您应该会看到类似的消息
- 现在尝试在您的客户端机器上进行连接。
- 如果这是一个网络应用,你应该能够通过浏览器连接
- 例如,尝试http://192.168.10.1:3000
如果您无法连接到服务器真实地址上的应用程序,则意味着您的应用程序未监听该地址。您需要研究如何更改应用程序配置以修改该行为。由于我不知道您正在运行什么应用程序,因此我无法提供任何好的想法。
答案2
使用(在终端提示符下)查找您的 Mac 的名称,hostname
并将其用于您的 URL。例如http://Tonys-iMac.local:3000/
如果由于某种原因 Bonjour 无法在您的环境中使用,请使用以下命令在 iMac 或 MacBook 上查找 Airport 的地址:
ipconfig getifaddr en1
或者一般来说
ipconfig getifaddr $(route -n get default|awk '/interface/ { print $2 }')
答案3
基本上,您可以从防火墙设置中允许某个应用程序(例如 ruby)接受传入连接。此外,要允许访问外部世界(例如 www),您需要通过路由器设置将流量转发到内部网关:端口。
具体操作如下:
- Mac->系统偏好设置->共享->启用“Web 共享”复选框
- Mac->系统偏好设置->安全->允许您的应用程序(例如 ruby)接受传入连接
打开路由器上的一个端口(通过 192.168.1.1)以将流量从 your_web_ip:port 转发到 local_gateway:port
- 例如从我的 Verizon 路由器设置->端口转发->创建规则:转发到本地网关(例如 192.168.1.4)、自定义端口、协议 tcp、源=任何、目标=3280、所有连接类型、转发到端口 = 3000。
完成。现在从远程计算机,打开浏览器,输入你的网络 IP 地址(通过以下方式查找http://www.whatismyip.com/)+上面的目标端口号,例如 72.189.194.65:3280,这将连接到您本地的 192.168.1.4:3000
注意:我在 Mac OSX 10.7.5 上运行
答案4
127.0.0.1 是每台计算机的本地地址。您必须找出机器的真实 IP 地址(或主机/Bonjour 名称)。转到“系统偏好设置”、“网络”,查找机器的 IP,如果使用电缆,则查找以太网端口的 IP,如果使用 WLAN,则查找 Airport 的 IP。然后在 iPhone 上的 Safari 中打开此地址以及 :3000 部分。