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

时间:2015-06-17 15:31:51

标签: javascript sockets google-chrome udp google-chrome-app

我正在使用包含以下代码的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
        });
    });
});

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

1 个答案:

答案 0 :(得分:1)

弗朗索瓦·博福特现在删除的答案提供了一个有用的建议,遗憾的是,这种建议更适合评论。我正在把它作为一个社区维基,这样他就不会觉得自己被剥夺了声誉。

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

您可以提供您所拥有的网络接口的显式IP地址,但更简单的解决方案是说“我想全部听取它们”。

引自the docs

  

使用"0.0.0.0"接受来自所有本地可用网络接口的数据包。

这应该在你的情况下解决它;一般来说,还需要检查防火墙是否正在通过请求;你已经做到了。