Как отправить пакет UDP через dgram в Nodejs? - PullRequest
0 голосов
/ 29 ноября 2018

Я пробовал разные версии функции отправки модуля сокета датаграмм Nodejs:

var dgram = require('dgram');

var client = dgram.createSocket('udp4');

client.send('Hello World!',0, 12, 12000, '127.0.0.1', function(err, bytes) {});
client.send('Hello2World!',0, 12, 12000, '127.0.0.1');
client.send('Hello3World!',12000, '127.0.0.1');

client.close();

Мой сервер работает с другим клиентом, но не с этим, ни один из пакетов не приходит.

dgram отправляет документацию Nodejs говорит

socket.send(msg[, offset, length], port[, address][, callback])

Есть ли проблема в моем заполнении аргументов, или что-то еще приводит к сбою?В программе сервера я использовал порт 12000 и петлевой IP-адрес.

1 Ответ

0 голосов
/ 29 января 2019

Попробуйте закрыть сокет в обратном вызове последнего отправленного сообщения.Затем сокет закрывается только после отправки сообщения.

var dgram = require('dgram');

var client = dgram.createSocket('udp4');

client.send('Hello World!',0, 12, 12000, '127.0.0.1');
client.send('Hello2World!',0, 12, 12000, '127.0.0.1');
client.send('Hello3World!',0, 12, 12000, '127.0.0.1', function(err, bytes) {
client.close();
});
...