Ich habe ein Projekt, an dem ich arbeite, die ein kleines 9-Byte-Paket an 7000 verschiedene Hosts außerhalb des lokalen Netzwerks senden muss, nachdem Sie wartet auf ihre Antworten auf dem gleichen Port und verarbeitet die Antworten.Senden von vielen kleinen Paketen aus Node.js UDP sendet nicht alle
Das Problem, das ich habe, ist Node.js dgram (Udp4) scheint nicht alle Pakete zu senden. Ich bin in keiner Weise einschränkend, also könnte es dort ein Problem geben.
Ich bin Schleifen, Erstellen der Pakete, dann feuern sie direkt mit .send(). Bei geöffnetem Wireshark kann ich sehen, dass von den 7000 "gesendet" nur ~ 1300 von ihnen scheinen, die Leitung zu treffen und zu gehen.
Das Skript selbst meldet alle Pakete als gesendet ohne Fehler, Wireshark zeigt ein anderes Ergebnis, und die Hosts am anderen Ende widerspiegeln, was Wireshark sagt, sie empfangen das Paket nicht. Ich verwende Folgendes zum Senden und Verifizieren, Paket ist ein Puffer.
udpServer.send(packet, 0, packet.length, port, address, function(error) {
if (!error) {
successes++;
console.log(successes + "/" + total);
} else {
console.log(error);
}
});
Irgendwelche Ideen auf, was ich hier falsch mache, oder was übersehen?
Ich denke, es den Rest der Pakete verloren, vielleicht haben Sie eine Lösung finden Sie hier: https://github.com/nodejs/node-v0.x-archive/issues/6696 – Jer
@ C0dekid.php I Hab 'mal geschaut. Das scheint sich hauptsächlich um die Empfangsseite zu drehen, anstatt zu senden. Es hat auch keine Vorschläge, außer unter Unix zu laufen. Ich habe verschiedene Plattformen mit dem gleichen Ergebnis ausprobiert. Danke für den Link, leider noch keine Lösung. –
Interessant. Haben Sie versucht, anstelle von Buffer eine einfache Zeichenfolge zu senden, nur um sicher zu gehen, dass dies nicht das Problem ist? (was es nicht sein sollte, aber nur für den Fall) –