无法使用node.js在2台本地计算机之间发送UDP消息

时间:2020-04-18 17:06:06

标签: node.js sockets udp port

我在一台计算机上有一台UDP服务器,而另一台计算机上有一台客户端。我无法通过本地网络或Internet接收服务器计算机上的客户端发送的消息。我的最终目标是将服务器放在我的内部网络上,并将客户端放在云上托管的虚拟服务器上。

当我在同一台计算机上运行相同的服务器和客户端时,它们会完美地对话。托管UDP服务器的ubuntu服务器上的防火墙处于非活动状态。

sudo ufw status 
Status: inactive

端口(31091)似乎正在UDP服务器上侦听

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::21                   :::*                    LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -
udp        0      0 127.0.0.53:53           0.0.0.0:*                           -
udp        0      0 192.168.10.23:68        0.0.0.0:*                           -
udp        0      0 127.0.0.1:31091         0.0.0.0:*                           2351/node /home/ubu
udp6       0      0 fe80::ba27:ebff:fea:546 :::*                                -

是否需要绑定到计算机内部IP而不是127.0.0.1?

这是我用来发送测试的代码...同样,如果服务器位于同一台计算机上,则只需将地址更改为localhost,该程序就可以完美运行。

var dgram = require('dgram');
var s = dgram.createSocket('udp4');
s.send(Buffer.from('this is a test'), 31091, '192.168.10.23');

在服务器端,程序较大,但我认为所有与UDP服务器相关的代码

//UDP Server
var PORT = 31091;
var HOST = '127.0.0.1';
var dgram = require('dgram');
var server = dgram.createSocket('udp4');

server.on('listening', function() {
  var address = server.address();
 console.log('UDP Server listening on ' + address.address + ':' + address.port);
});


server.bind(PORT, HOST);
//END UDP Server

我感觉自己缺少一些简单的东西,但是我仍在学习所有这些东西如何协同工作。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将UDP服务器地址更改为0.0.0.0而不是127.0.0.1可以达到目的。

//UDP Server
var PORT = 31091;
var HOST = '0.0.0.0';
var dgram = require('dgram');
var server = dgram.createSocket('udp4');

server.on('listening', function() {
  var address = server.address();
 console.log('UDP Server listening on ' + address.address + ':' + address.port);
});


server.bind(PORT, HOST);
//END UDP Server