У меня есть 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
Мне кажется, что мне не хватает чего-то простого Но я все еще учусь тому, как все это работает вместе. Любая помощь очень ценится.