2011-09-05 81 views
0

我試圖聆聽192.168端口從其他設備和計算機訪問我的節點應用程序。我在這裏做錯了什麼?我在Mac上(OSX Lion)如何聆聽192.168與節點?

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, "192.168.1.122"); 
console.log('Server running at http://192.168.1.122/'); 
+2

究竟是什麼問題?它連接失敗嗎?如果你只做'.listen(1337)',它會起作用嗎? – loganfsmyth

+0

我如何能夠訪問正在通過其他計算機運行的節點應用程序?這是我的問題基本上 – Mohsen

回答

1

只是離開地址,這是不必要的。然後通過在瀏覽器中訪問http://192.168.1.122:1337從另一臺計算機連接到它,假設這是本地網絡內服務器的IP地址。

如果你想從其他地方(本地網絡外的計算機)訪問它,你需要找到你的IP地址到外面的世界(whatismyip.com是方便的),然後確保你的路由器有端口1337指着122機器。然後,通過該IP地址(和端口1337)

+0

不適合我!我聽1337就像這樣.listen(1337),它不能從我自己的電腦 – Mohsen

+0

嘗試訪問運行它的計算機上的「127.0.0.1:1337」 – fbstj

1

這裏訪問它是一些有用的錯誤信息:

  • EADDRNOTAVAIL如果你沒有與該機器相關聯的IP地址。
  • EACCES如果您嘗試打開您無權訪問的端口(端口< 1024作爲用戶)。
  • EADDRINUSE如果您嘗試打開已經打開的端口。

如果這些都不是你的問題,並且節點在實例化端口時不會崩潰,那麼你有防火牆或路由問題,診斷應該從那裏開始,因爲它很可能不是node.js問題。

在一個乾淨的盒子運行此命令:

[[email protected] ~]$ node 
> var http = require('http'); 
undefined 
> http.createServer(function (req, res) { 
... res.writeHead(200, {'Content-Type': 'text/plain'}); 
... res.end('Hello World\n'); 
... }).listen(1337); 
{ domain: null, 
    _events: 
    { request: [Function], 
    connection: [Function: connectionListener] }, 
    _maxListeners: 10, 
    _connections: 0, 
    connections: [Getter/Setter], 
    allowHalfOpen: true, 
    _handle: 
    { writeQueueSize: 0, 
    onconnection: [Function: onconnection], 
    owner: [Circular] }, 
    httpAllowHalfOpen: false, 
    _connectionKey: '4:0.0.0.0:1337' } 
> 

返回的對象表明,一個成功的http.listen已經完成。