当前位置: 首页 > 面试题库 >

nodejs:错误:EADDRNOTAVAIL,无法分配请求的地址

西门京
2023-03-14
问题内容

我在172.16.1.218上运行以下node.js服务器:

var net=require('net');

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

我可以远程登录到它,它会按预期的方式回显。

我有以下运行在172.16.1.224上的node.js服务器:

var net = require('net');

var server = net.createServer(function (socket) {

  // Every time someone connects, tell them hello and then close the connection.
  socket.addListener("connect", function () {
    sys.puts("Connection from " + socket.remoteAddress);
    socket.end("Hello World\n");
  });

});

// Fire up the server bound to port 7000 on localhost
server.listen(6001,"172.16.1.218");

但是,当我尝试运行它时,出现以下错误:

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: EADDRNOTAVAIL, Cannot assign requested address
    at Server._doListen (net.js:1100:5)
    at net.js:1071:14
    at Object.lookup (dns.js:159:5)
    at Server.listen (net.js:1065:20)
    at Object.<anonymous> (/home/hynese/Desktop/test.js:16:8)
    at Module._compile (module.js:402:26)
    at Object..js (module.js:408:10)
    at Module.load (module.js:334:31)
    at Function._load (module.js:293:12)
    at Array.<anonymous> (module.js:421:10)

我已关闭所有防火墙等。对于此错误,我一无所知。希望有人能提供帮助。

提前谢谢了,


问题答案:

开启时,172.16.1.224您无法监听,172.16.1.218因为那不是您正在监听的计算机的IP。

如果要在该计算机上收听,请使用:

server.listen(6001,"172.16.1.224");


 类似资料:
  • 当运行以下代码时,我在说java.net。绑定异常:绑定失败:EADDRNOTAVAIL(无法分配请求的地址)。我不知道为什么会这样。代码如下: 谢谢!

  • > 我已经用以下接口配置了Ubuntu Linux系统&分配的IPV6地址如下: eth2:链路封装:以太网HWaddr 00:50:56:8D:56:14 inet ADDR:192.168.2.10BCAST:0.0.0掩码:255.255.255.0 inet6 ADDR:FC00:1234:2::10/120作用域:全局 inet6 ADDR:FE80::250:56FF:FE8D:561

  • 问题内容: 我想在我的应用程序中使用低端口(Spring Web上的SNMP陷阱接收器+ Tomcat7)。正如我之前在此线程将低端口绑定到Ubuntu Server上的Java程序中所告诉的那样,我收到了错误权限被拒绝。然后,我将tomcat7用户组更改为root。但是之后,我得到了java.net.BindException:无法分配请求的地址错误。对于我尝试的每个端口(低端口或高端口),我总

  • 我想在我的应用程序中使用低端口(SpringwebTomcat7上的SNMP陷阱接收器)。正如我之前在Ubuntu服务器上的这个线程Binding Low Port to Java Program中所说的,我得到了一个错误Permission denied。然后我将tomcat7用户组更改为root。但在那之后,我得到了java.net。BindException:无法分配请求的地址错误。对于我尝

  • 问题内容: 设置:我有一个虚拟机,并且在虚拟机中运行三个容器(一个Nginx代理,一个非常简单的Flask应用程序和Redis)。烧瓶应在5000端口上使用,而Redis应在6379上使用。 这些容器中的每个容器都可以独立运行,并且运行良好,也可以通过docker compose as a service来使用 。 在flask应用程序中,我的目标是连接到Redis并查询一些密钥。 Nginx容器

  • 无法解决此错误,我首先尝试更改关闭端口,但它不起作用,然后我更改了连接器端口,但仍然不起作用。