嗯,我有一个小路线,应该发送一个UDP包并打印一个确认文件。根据节点上的文档,以下内容应该可以正常工作:
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导致了虚无:
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应用程序。
发布于 2021-03-23 15:43:25
您需要告诉tcpdump接口它需要侦听。
tcpdump -i lo udp端口12000
lo是本地主机的接口。
本链接中的更多信息
如果要保存流量日志,可以使用威雷沙克。
我使用‘!’(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);
它是来自节点文档的代码示例
https://stackoverflow.com/questions/66709577
复制相似问题