2012-01-08 2 views
0

Вот простой TCP-сервер. Фактический IP из VPS, на котором этот код работает в 1.2.3.4nodejs tcp test с удаленного ПК

var net = require('net'); 

var server = net.createServer(function (socket) { 
    socket.write("Echo server\r\n"); 
    socket.pipe(socket); 
}); 

server.listen(1337, "127.0.0.1"); 

Теперь я пытаюсь пинговать этот сервер, в то время как на том же самом VPS его ответ мне. Но когда я пытаюсь получить доступ к VPS с какого-то удаленного ПК по команде

nc 1.2.3.4 1337 

его не эхом. Каковы могут быть возможные причины?

ответ

5

Вы слушаете на 127.0.0.1, таким образом, он реагирует только на запросы, сделанные с localhost. Чтобы отвечать на другие хосты, вам необходимо прослушать 0.0.0.0.

ОБНОВЛЕНО: RFC5735 объясняет этот адрес следующим образом:

0.0.0.0/8 - Адреса в этом блоке относятся к исходным хостам "этой" сети. Адрес 0.0.0.0/32 может использоваться как адрес источника для этого хоста в этой сети; другие адреса в пределах 0.0.0.0/8 могут использоваться для обратитесь к указанным хостам в этой сети

+0

Что это такое 0.0.0.0? Я имею в виду науку, стоящую за ней? как localhost - 127.0.0.1 – coure2011

+1

см. http://tools.ietf.org/html/rfc5735#page-3 – qiao

Смежные вопросы