如何使用nodejs发送udp包?
How to send udp packages using nodejs?
好吧,我有一个应该发送 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包已发送
当我 post 到正确的 URL 时,我注意到 post 人收到的回复 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 应用程序。
你需要告诉tcpdump它需要监听的接口。
tcpdump -i lo udp port 12000
lo 是本地主机的接口。
更多信息在此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);
的代码示例
好吧,我有一个应该发送 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包已发送
当我 post 到正确的 URL 时,我注意到 post 人收到的回复 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 应用程序。
你需要告诉tcpdump它需要监听的接口。
tcpdump -i lo udp port 12000
lo 是本地主机的接口。
更多信息在此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);