Chrome UDP 套接字未从远程计算机接收

Chrome UDP sockets not receiving from remote machine

我正在开发一个包含以下代码的 Google Chrome 应用程序:

var socket = chrome.sockets.udp;
var PORT = 5005;
var HOST = '127.0.0.1';

socket.create({}, function(sockInfo){
    socket.bind(sockInfo.socketId, HOST, PORT, function(result){
        socket.onReceive.addListener(function(info){
            // do stuff with the packet data
        });
    });
});

当我从本地主机循环发送数据时,这种机制工作得很好。但是,当我尝试从远程机器发送时,onReceive.addListener 回调函数永远不会被调用。起初我以为这可能是本地网络问题,但当我 tcpdump -vv udp port 5005 它读取我发送的数据时,我知道它到达了我的机器。这让我相信这是一个 Chrome 问题...在我的 manifest.json 文件中,我为 UDP 设置了通用 "bind" 和 "send" 权限,所以我看不到为什么这不起作用。有什么想法吗?

François Beaufort 现已删除的答案提供了一个有用的建议,遗憾的是,其方式更适合发表评论。我正在将其设为社区 Wiki,这样他就不会觉得自己名誉扫地了。

HOST 部分表示您正在监听哪个接口的数据。将其设置为 127.0.0.1 意味着您只监听环回接口,无法从外部访问。

您可以提供您拥有的网络接口的明确 IP 地址,但更简单的解决方案是说“我想全部监听”。

引自the docs

Use "0.0.0.0" to accept packets from all local available network interfaces.

这应该可以解决你的问题;通常,还需要检查防火墙是否允许请求通过;你已经做到了。