首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用nodejs发送udp包?

如何使用nodejs发送udp包?
EN

Stack Overflow用户
提问于 2021-03-19 14:00:38
回答 1查看 380关注 0票数 10

嗯,我有一个小路线,应该发送一个UDP包并打印一个确认文件。根据节点上的文档,以下内容应该可以正常工作:

代码语言:javascript
复制
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在邮递员处收到的回复。所以这起作用了。

然而,UDP包似乎丢失了,在我的本地ubuntu上使用tcpdump导致了虚无:

代码语言:javascript
复制
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应用程序。

EN

Stack Overflow用户

回答已采纳

发布于 2021-03-23 15:43:25

您需要告诉tcpdump接口它需要侦听

tcpdump -i lo udp端口12000

lo是本地主机的接口。

链接中的更多信息

如果要保存流量日志,可以使用威雷沙克

我使用‘!’(udp.port == 53维希tcp.port == 53) && udp作为过滤器,只查看udp数据包。

我将此代码添加到我的服务器上,并将udp数据包发送到那里以打印内容。

代码语言:javascript
复制
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);

它是来自节点文档的代码示例

票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66709577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档