javascript - Android上运行的Chrome App如何接收UDP广播包

标签 javascript cordova udp google-chrome-app cordova-chrome-app

我可以在运行 chrome 应用程序的 Windows 中毫无问题地接收广播数据包。但是,当我使用该应用程序并使用 cordova/crosswalk 工具进行编译时,我似乎无法收到任何数据包。我在 wireshark 中看到了所有数据包。我的数据包从:172.24.0.42 传输并在 172.24.255.255 上广播(255.255.255.255 上的广播在 Android 上不起作用,但它在 windows chrome 应用程序上有效)。

这是我的(manifest.json):

"sockets":{
        "udp": {
            "bind": "*"
        }
    }, 
    "permissions":["system.network" , "power"],

这是我的网络代码:

chrome.sockets.udp.create({}, function(socketInfo) {
    socketId = socketInfo.socketId;
    // Setup event handler and bind socket.
    chrome.sockets.udp.onReceive.addListener(onReceive);
    chrome.sockets.udp.bind(socketId, "0.0.0.0", 4213, function(result) {
        if (result < 0) {
            console.log("Error binding socket.");
            return;
        }
    //chrome.sockets.udp.send(socketId, arrayBuffer, '127.0.0.1', 1337, function(sendInfo) {
    //  console.log("sent " + sendInfo.bytesSent);
    //  })
    //chrome.sockets.udp.setBroadcast(socketId, true, function(){})
    });
});

这是我收到数据包的时间:

var onReceive = function(info) {
    if (info.socketId !== socketId)
        return;
    chrome.sockets.udp.setPaused(socketId, true, function(){}); // Set socket paused; Essentially blocking
    //console.log();

    ///processing of my packet

    chrome.sockets.udp.setPaused(socketId, false, function(){}); //unpause socket
};

编辑:我一直在尽力理解为什么我无法在 Android 上的 chrome 应用程序中获取任何广播数据包。不幸的是,我碰壁了。

最佳答案

setBroadcast 已添加到库中。您现在可以调用 setBroadcast() 来启用广播权限。

1.3.0 (Sep 27, 2016)

Adds chrome.udp.setBroadcast()

https://github.com/MobileChromeApps/cordova-plugin-chrome-apps-sockets-udp

关于javascript - Android上运行的Chrome App如何接收UDP广播包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29786248/

相关文章:

http - 为什么 Skype 可以使用 HTTP 代理进行实时语音通信?

javascript - 如何在 Node 中 promise 和等待 setImmediate?

javascript - 从 DOM 生成 PDF?

javascript - 根据条件属性对对象进行排序

xcode - 找不到“Cordova/CDVUIWebViewDelegate.h”文件

java - Android 中使用 PhoneGap 的异步任务

java - 我选择 UDP 作为我的 peer 2 peer 服务,我如何证明它在我的情况下是可靠的

javascript - 隐藏除具有过滤对象中定义的 ID 的元素之外的所有表行

cordova - 你可以用原生 iPhone 开发做什么而不能使用 phoneGap?

java - 如何在Java中格式化UDP数据包?