gpt4 book ai didi

Node.js DGRAM 模块 : Cannot send UDP message to remote machine but can to local machine

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:49 29 4
gpt4 key购买 nike

我正在使用 Nodejs 的 dgram 模块运行一个简单的 UDP 服务器。相关代码很简单:

     server = dgram.createSocket('udp4');
server.bind(10022,'127.0.0.1');

当我在本地计算机上使用 netstat 时,使用以下命令:

 sudo netstat -l

我看到这个条目:

 Proto Recv-Q Send-Q Local Address     Foreign Address         State
udp 0 0 localhost:10022 *:*

当我使用接口(interface)的 IP 地址从远程计算机执行 nmap 时:

sudo nmap -sU -p 10022 192.168.7.171

我看到这个:

  Nmap scan report for 192.168.7.171
Host is up (0.00032s latency).
PORT STATE SERVICE
10022/udp closed unknown

我在同一台机器上运行 UDP 客户端代码,当我使用 server.bind(10022,'127.0.0.1') 时,它工作正常,如上所述。当我使用分配给接口(interface)的真实IP地址时,它不会。

我还想使用远程计算机上的客户端代码。因此,当我使用 server.bind(10022, '192.168.7.171') 代替 server.bind(10022,'127.0.0.1') 时,我希望能够从远程向 UDP 进程发送消息机器。我不能。有趣的是,发送函数的回调在远程计算机中也不会返回错误。

如何让远程计算机上的客户端代码向 UDP 服务器发送消息。关闭所有防火墙进行测试,因为我最初怀疑这是防火墙问题。无论如何,测试期间两台机器都位于本地 Intranet 上。

最佳答案

bind()address参数是可选的,您可以尝试通过省略来监听所有本地地址(0.0.0.0)但仍指定端口。例如:

server.bind(10022);

关于丢失错误 UDP默认是一个不可靠的协议(protocol),当在线上发送时,传输将被视为成功。 UDP不发回确认包,如果需要可靠的 channel 可以使用TCP。

关于Node.js DGRAM 模块 : Cannot send UDP message to remote machine but can to local machine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39108703/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com