Why can't I listen on 'localhost' but can I listen on '127.0.0.1'?
I'm having difficulties understanding why the following line of code works in node.js:
server.listen(12345, "127.0.0.1"); // works
but this one does not:
server.listen(12345, "localhost"); // fails
Coding localhost
literally results in the following error thrown:
events.js:45
throw arguments[1]; // Unhandled 'error' event
^
Error: ECONNREFUSED, Could not contact DNS servers
at IOWatcher.callback (dns.js:74:15)
I do not understand why it should 'contact DNS servers' as it's localhost as defined in my HOSTS
file (I'm using node.js under Windows).
Why doesn't 开发者_JAVA百科hardcoding localhost
work?
Are uou using cygwin build? Did you try 'Set up Domain Name Resolution (DNS)' :
Cygwin internally uses Windows for DNS queries. node.js uses the c-ares library that relies on /etc/resolv.conf. Cygwin ships with an empty /etc/resolv.conf. In order to enabled networking from your scripts, add these IPs to the file (Google Public DNS):
$ vim /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
It turned out that using the cygwin build was the problem.
I looked at http://nodejs.org/ and I discovered that only recently a native Windows binary file was made available, which works like a charm.
I've never personally used node.js, however some quick searching turned up some interesting results...
From what I can tell, everything I've seen says that you need to find the IP address that you are looking to listen to. Here is an example: Get local IP address in node.js this behavior makes sense too. Domain names are arbitrary, it's the IP that matters so sometimes that is all something wants to deal with.
If I'm missing something about how node.js works I am sorry.
精彩评论