gpt4 book ai didi

javascript - 如何使用 nodejs 发送 udp 包?

转载 作者:行者123 更新时间:2023-12-03 15:46:20 25 4
gpt4 key购买 nike

好吧,我有一个小路由应该发送一个 UDP 包并打印一个确认。根据 Node 上的文档,以下应该可以正常工作:

const dgram = require('dgram');

export async function sendUDP(sess, parameters: {}, res) {
const client = dgram.createSocket('udp4');
client.send('Hello World!',0, 12, 12000, '127.0.0.1', function(err, bytes) {
client.close();
});

//res is the response object from express
return res.send("Send udp packet");
}
它应该向回调 IP(本地计算机)上的端口 12000 发送 UDP 请求。并且还发送一个UDP数据包已经发送的回复。
我注意到回复 Send udp packet当我发布到正确的 URL 时在 postman 处收到。所以这是有效的。
但是,UDP 包似乎丢失了,使用 tcpdump在我本地的 ubuntu 上导致虚无:
sudo tcpdump -n udp port 12000

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp5s0, link-type EN10MB (Ethernet), capture size 262144 bytes

0 packets captured
0 packets received by filter
0 packets dropped by kernel
(当然,在功能测试期间 tcpdump 一直在运行)。 UDP 请求去哪儿了?发生了什么?
我希望有一个生活记录器,以便我可以轻松地使用 udp 测试 nodejs 应用程序。

最佳答案

您需要 告诉 tcpdump 它需要监听的接口(interface) .

tcpdump -i lo udp port 12000


lo 是 localhost 的接口(interface)。
link 中的更多信息
您可以使用 wireshark如果要保存流量日志。
我使用 '!(udp.port == 53 || tcp.port == 53) && udp' 作为过滤器,只查看 udp 数据包。
我将此代码添加到我的服务器并将 udp 数据包发送到那里以打印内容

const dgram = require('dgram');
const serverUDP = dgram.createSocket('udp4');

serverUDP.on('error', (err) => {
console.log(`serverUDP error:\n${err.stack}`);
serverUDP.close();
});

serverUDP.on('message', (msg, rinfo) => {
console.log(`serverUDP got: ${msg} from ${rinfo.address}:${rinfo.port}`);
});

serverUDP.on('listening', () => {
const address = serverUDP.address();
console.log(`serverUDP listening ${address.address}:${address.port}`);
});

serverUDP.bind(3001);

它是来自 node documentation 的代码示例

关于javascript - 如何使用 nodejs 发送 udp 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66709577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com