Не удается отправить UDP-сообщение между двумя локальными компьютерами с node.js - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть UDP-сервер на одной машине и клиент на другой. Я не могу получить сообщение, отправленное клиентом на серверном компьютере через локальную сеть или через inte rnet. Моя конечная цель состоит в том, чтобы сервер во внутренней сети и клиент размещались на виртуальном сервере, размещенном в облаке.

Когда я запускаю один и тот же сервер и клиент на одной машине, они прекрасно общаются. Брандмауэр на сервере Ubuntu, на котором размещен сервер UDP, неактивен.

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 голосов
/ 18 апреля 2020

Изменение адреса сервера 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
...