【问题标题】:Chrome UDP sockets not receiving from remote machineChrome UDP 套接字未从远程计算机接收
【发布时间】:2015-06-17 15:31:51
【问题描述】:

我正在开发一个包含以下代码的 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 文件中,我为 UDP 设置了通用的“绑定”和“发送”权限,所以我不明白为什么这不起作用。有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    François Beaufort 现在已删除的答案提供了一个有用的建议,遗憾的是,这种建议更适合发表评论。我正在把它变成一个社区 wiki,这样他就不会觉得自己的名声被剥夺了。

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

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

    引用the docs:

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

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

    【讨论】:

    • 我也有同样的问题,但是好像并没有解决问题。消息虽然传递,但没有传递给 onReceive 方法。还有其他建议吗?
    猜你喜欢
    • 2013-03-23
    • 2019-12-14
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多