UDP数据报服务器无法接收远程计算机数据包求助
UDP服务器本地可接收但远程无法接收的问题
我在Electron程序中使用UDP/datagram模块创建了一个UDP监听服务器,将套接字绑定到本地非回环IP地址(192.168.2.64)和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
- Electron版本:23.2.4
- Node.js版本:18.14.2
启动日志
启动时控制台输出如下:
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中能看到远程发送的数据包(本地发送的数据包需通过回环捕获才能看到,推测是网卡将自身IP发送的数据包视为回环流量)
- 两台计算机均连接到同一桌面以太网交换机,属于同一局域网
恳请各位提供解决思路。
内容的提问来源于stack exchange,提问作者Dave Colter
相关产品推荐
相关产品推荐

