NodeJS UDP/数据报服务器将不会从远程计算机接收数据包

hgqdbh6s  于 2023-05-17  发布在  Node.js
关注(0)|答案(1)|浏览(130)

我在Electron程序中使用UDP/datagram模块创建了一个UDP监听服务器。套接字绑定到我的本地IP地址(不是环回)和端口8500。套接字函数正常运行。在Process Explorer中可以看到打开的套接字。我正在本地和远程计算机上使用Packet Sender发送测试数据包。从本地计算机发送的那些被接收,从远程计算机发送的那些不被接收。
我的代码几乎是逐字逐句地从Node.js文档中获取的:

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

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

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

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

server.bind(8500, '192.168.2.64', () => {
    console.log('bind callback!');
});

本地计算机:Windows 11远程计算机:Windows 10电子版:23.2.4 node.js版本:18.14.2
以下是启动时的console.log:

UDP address: { address: '192.168.2.64', family: 'IPv4', port: 8500 }
server listening 192.168.2.64:8500
bind callback!
server got: Testing 1, 2, 3... from 192.168.2.64:8501
server got: Testing 1, 2, 3... from 192.168.2.64:8501
server got: Testing 1, 2, 3... from 192.168.2.64:8501

对从远程计算机发送的数据包没有任何响应。开发人员工具视图中没有任何消息。
我已经关闭了两台电脑的防火墙。Packet Sender的两个示例可以交换消息。我可以在Wireshark中看到远程发送的数据包。(奇怪的是,我在Wireshark中看不到本地发送的数据包。也许我的网卡能识别自己的IP,并将其视为环回。* 编辑-似乎是这样;当我使用Wireshark的环回捕获时,我看到这些数据包 *)
两台计算机都连接到我table上的以太网交换机上,该交换机连接到我们的局域网。
先谢谢你了。

dm7nw8vv

dm7nw8vv1#

好吧,它现在工作,似乎已经成为一个防火墙的问题毕竟。我们正在使用ESET Endpoint Security。
我以前禁用了防火墙,但在实现TCP服务器时又尝试了一次。当TCP工作时,我给UDP另一次机会,它也在工作。
我不能肯定地说是什么问题,但我用网络故障排除向导解除阻止远程设备,现在UDP和TCP都工作,因为他们应该。
感谢阅读。

相关问题