如何从另一台计算机访问笔记本电脑上的本地 Web 服务器?

Ton*_*ony 40 mac-osx

我在 127.0.0.1:3000 的计算机上运行了一个应用程序

我想从连接到同一网络的 iPhone 访问该应用程序。我以前做过这个,但不知道我是怎么做的。有任何想法吗?

Phi*_*ack 43

首先,您需要确定运行网络服务器的机器的 IP 地址或名称。我假设您在 mac 上运行网络服务器,因为您标记了您的帖子,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 会话。
  • 现在尝试在您的客户端计算机上进行连接。

如果您无法通过服务器的真实地址连接到您的应用程序,则意味着您的应用程序没有在该地址上侦听。您需要研究如何更改应用程序配置以修改该行为。由于我不知道您正在运行什么应用程序,因此我无法提供任何好的想法。

  • 我正在使用 mac 塞拉。我可以通过 http://10.55.18.22:3000/ 从我的 mac(服务器正在运行的地方)访问服务器,但无法从另一台计算机访问它,即使两者都在同一网络中。网络共享选项在 Sierra 中不可用。我们怎样才能做到这一点? (2认同)

Jam*_*mes 14

使用hostname(在终端提示下)查找 Mac 的名称并在您的 URL 中使用该名称。例如http://Tonys-iMac.local:3000/

如果由于某种原因 Bonjour 在您的环境中不起作用,请在 iMac 或 MacBook 上找到机场的地址

ipconfig getifaddr en1

或者一般来说

ipconfig getifaddr $(route -n get default|awk '/interface/ { print $2 }')

  • 为什么卓悦不工作?我发现我的主机名是 gm20152.local 。但是当我在同一台机器上尝试 http://gm20152.local:3000 时,它会显示一个有效的页面。但是当我在我的 android 手机上尝试 http://gm20152.local:3000 时,我手机上的浏览器找不到主机。我认为这是因为我的手机无法将 gm20152.local 映射到我的 macbook 的 ip 地址。我怎样才能做到这一点? (2认同)

Cha*_* T. 6

基本上,通过防火墙设置,您可以允许某个应用程序(例如 ruby​​)接受传入的连接。此外,要允许访问外部世界(例如 www),您需要通过路由器设置将流量转发到您的内部网关:端口。

以下是如何执行此操作:

  1. Mac->系统首选项->共享->启用“网络共享”复选框
  2. Mac->Sys Preferences->Security-> 允许您的应用程序(例如 ruby​​)接受传入连接
  3. 在路由器上打开一个端口(通过 192.168.1.1)以将流量从 your_web_ip:port 转发到 local_gateway:port

    1. 例如,从我的 Verizon 路由器设置 -> 端口转发 -> 创建规则:转发到本地网关(例如 192.168.1.4)、自定义端口、协议 tcp、源 = 任意、目标 = 3280、所有连接类型、转发到端口 = 3000。

完毕。现在从远程计算机,打开浏览器到您的 web ip 地址(通过http://www.whatismyip.com/查找)+ 上面的目标端口#,例如 72.189.194.65:3280,这将连接到您的本地 192.168.1.4 :3000

注意:我在 Mac OSX 10.7.5 上运行