没有得到任何流量侦听 UPNP

Not getting any traffic listening for UPNP

我有一些 NodeJS 代码可以侦听为 UPNP 发送的广播消息。一个代码片段在端口 1900 上侦听,另一段代码在端口 1900 上使用 dgram 进行 UDP。这两段代码都没有 return 任何消息。我用一个实用程序验证了网络上正在广播的流量。我不会同时 运行 两段代码,这样我就避免了任何端口问题。使用 netstat -a 当代码为 运行ning.

时,我能够看到正在使用的端口

为什么我收不到这些 UPNP 消息?

//DServer for UDP
/*dserver = dgram.createSocket('udp4');
dserver.bind('1900', () => {
    console.log('Listening on address:' + dserver.address());
});
dserver.on('error', (err) => {
    console.log('UDP Server ERROR:' + err);
    dserver.close();
});
dserver.on('close', () => {
    console.log('UDP Server closed');
});
dserver.on('listening', () => {
    console.log('UDP Server listening');
});
dserver.on('message', (msg, rinfo) => {
    console.log(msg + '\n' + rinfo);
});*/
//TCP Server ( for testing )
let dserver = net.createServer((socket) => {
    socket.on('data', (data) => {
        console.log("DATA:" + data.toString());
    }).on('error', (err) => {
        console.trace('DServer socket.on: error');
        console.error(err.stack);
    });
}).on('listening', () => {
    console.log('DServer Listening');
}).on('connection', () => {
    console.log('DServer got a connection');
}).on('close', () => {
    //stays open if client closes conx
    console.log('DServer Closed');
}).on('error', (err) => {
    console.trace('DServer.on: error');
    console.error(err.stack);
});
dserver.listen({ port: 1900 }, () => {
    console.log('DServer Started Listening');
});

尝试了一些 dgram 方法,这似乎工作得很好:

let dgram = require('dgram');

//DServer for UDP
dserver = dgram.createSocket('udp4');
dserver.bind('1900');//UDP Port all UPNP messages broadcast on
dserver.on('error', (err) => {
    console.log('UDP Server ERROR:' + err);
    dserver.close();
});
dserver.on('close', () => {
    console.log('UDP Server closed');
});
dserver.on('listening', () => {//server start to listen after dserver.bind
    console.log('UDP Server listening');
    dserver.setMulticastLoopback(true);//NEEDED to allow broadcast packets
    //on the network interface, NodeJS documentation has more info.
    dserver.setMulticastTTL(128);//This is for sending not needed for recieving
    dserver.addMembership('239.255.255.250');//add to broadcast-IP UPNP range

});
dserver.on('message', (msg, rinfo) => {//When receive message print to screen
    console.log(msg + '\n' + rinfo);
});