2013-01-22 67 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

相關問題