2013-01-22 64 views
23

我在我的计算机上构建了一个Node.js Web服务器,使用众所周知的http-web-server-Node.js :MAC上的Node.js:从另一台计算机访问Node.js Web服务器

var http = require('http'); 

http.createServer(function(req, res){ 
    res.writeHead(200, {'content-type': 'text/plain'}); 
    res.end('It works'); 
}).listen(3000, '127.0.0.1'); 

这在运行服务器的计算机上工作(如预期)。

我想从同一局域网中的另一台计算机访问服务器。在运行服务器的计算机(Apple MacOSX)的终端上使用ifconfig,我得到:192.168.0.6

所以,在我的其他电脑,我打开浏览器并连接到http://192.168.0.6:3000,但我得到:

Oops! Google Chrome could not connect to 192.168.0.6:3000 

我的最终目的,是为了能够使用我的智能手机连接到服务器。

任何帮助将受到欢迎。如有必要,请不要犹豫询问更多细节。

感谢提前:)

回答

35

127.0.0.1只有本地接口。尝试开始收听所有接口:

var http = require('http'); 

http.createServer(function(req, res){ 
    res.writeHead(200, {'content-type': 'text/plain'}); 
    res.end('It works'); 
}).listen(3000, '0.0.0.0'); 
+1

哇!非常感谢Vadim,它可以工作(即使在我的智能手机中)。你能否提供更多细节(如果可能的话)? – htaidirt

+5

你的机器有几个网络接口。你可以通过执行'ifconfig'命令来看到它。通过将'127.0.0.1'设置为仅将您的node.js服务器绑定到回送接口。这个接口只能从运行的机器上访问。 '0.0.0.0'是所有可用接口的别名。你也可以将你的服务器绑定到另一个选择的接口,如'192.168.0.6',但在这种情况下,它不应该被'http://127.0.0.1:3000'访问。 –

+0

谢谢瓦迪姆。现在我更多地了解它是如何工作的。事实上,当我将服务器绑定到'192.168.0.6'时,它在访问这个地址时起作用,但不是'localhost'。再次感谢。 – htaidirt

相关问题