【问题标题】:Cannot send UDP message between 2 local computers with node.js无法使用 node.js 在 2 台本地计算机之间发送 UDP 消息
【发布时间】:2020-08-01 05:16:28
【问题描述】:

我在一台机器上有一个 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

我觉得我错过了一些简单的东西,但我仍在学习这一切如何协同工作。非常感谢任何帮助。

【问题讨论】:

    标签: node.js sockets udp port


    【解决方案1】:

    将 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
    

    【讨论】:

      猜你喜欢
      • 2018-03-31
      • 2020-09-29
      • 1970-01-01
      • 2013-09-26
      • 2013-09-29
      • 1970-01-01
      • 2020-10-27
      • 2012-03-06
      • 1970-01-01
      相关资源
      最近更新 更多