Проблемы с перехватом пакетов UDP DGRAM - PullRequest
0 голосов
/ 12 марта 2020

У меня есть 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, но мне неясно, почему они не собираются.

Кто-нибудь из вас знает? Ура!

...