У меня есть arduino в локальной сети, передающий UDP-пакеты с некоторыми данными.
С моего ноутбука, использующего сеанс s sh с Pi, мой ноутбук и Pi также находятся в локальной сети, когда я запускаю :
sudo tcpdump -n udp port 8888
Терминал регистрирует пакеты UDP
18:14:44.868050 IP 192.168.1.27.8888 > 255.255.255.255.67: BOOTP/DHCP, unknown (0x1a), length 4
Я немного не уверен, почему кажется, что пакет прибывает в 255.255.255.255 на порт 67, так как мое arduino запрограммировано на отправьте на порт 8888. Pi выполняет следующий скрипт:
const dgram = require('dgram');
const catcher = dgram.createSocket('udp4');
catcher.on('listening', () => {
const address = catcher.address();
console.log(`server listening ${address.address}:${address.port}`);
});
catcher.on('message', (msg, rinfo) => {
console.log('Received a Message from: ' + rinfo.address + " Message Code: " + msg.readUInt8(0));
});
catcher.on('error', (err) => {
console.log(`server error:\n${err.stack}`);
});
catcher.bind({
address: "255.255.255.255",
port: 8888,
exclusive: true
});
, который в значительной степени идентичен документации по dgram basi c, но на самом деле я ничего не вижу в терминале для пакеты. Я попытался перебрать привязку к localhost, определить его локальный IP-адрес вручную, когда он просто оставлен на catcher.bind(8888)
, привязан к 0.0.0.0, и, наконец, я попытался 255.255.255.255, но не повезло. Даже попробовал порт 67 просто быть уверенным.
Очевидно, что пакеты достигают Пи, поскольку я могу видеть их через tcpdump
, но мне неясно, почему они не собираются.
Кто-нибудь из вас знает? Ура!