使用Cordova插件收听UDP广播

时间:2017-02-06 11:50:24

标签: android cordova udp

我对整个UDP概念都很陌生,所以我很抱歉如果我说些蠢话。

我希望我在Android上运行的应用程序只能监听UDP广播。

我安装了这个插件Cordova Chrome UDP

所以我的问题从这个问题开始:

如果我只想收听消息,我是否必须创建一个套接字,或者我只需添加这样的监听器:

chrome.sockets.udp.onReceive.addListener(receiveListener);

也许我必须先创建一个套接字才能知道在哪里收听广播?

是否有一种简单的方法来测试连接。我尝试了几种方法,其中一种方法是将其中一个设备连接到另一个设备的热点。然后我尝试从其中一个设备发送广播信号(在使用setBroadcast后启用套接字广播)但另一个没有收到它。 onReceive事件实际上已被解雇,但仅限于发送广播消息的设备(这很明显,但我不知道这是否是一个好消息,所以我提到它)。

以下是一些代码:

function sendBroadcast() {
    console.log("Sending broadcast");
    var port = 1667;
    var arr = new Uint8Array(256);
    for (var i = 0; i < arr.length; i++) {
      arr[i] = i;
    }

    chrome.sockets.udp.create(function(createInfo) {
      chrome.sockets.udp.bind(createInfo.socketId, '0.0.0.0', port, function(result) {
        chrome.sockets.udp.setBroadcast(createInfo.socketId, true, function(result){
          chrome.sockets.udp.send(createInfo.socketId, arr.buffer, '255.255.255.255', port, function(result) {
            if (result < 0) {
              chrome.sockets.udp.close(createInfo.socketId);
            } else {
              chrome.sockets.udp.close(createInfo.socketId);
            }
          });
        });
      });
    });
}

function createSocket(){
    chrome.sockets.udp.create(function(createInfo) {
      chrome.sockets.udp.bind(createInfo.socketId, '0.0.0.0', 0, function(result) {
        chrome.sockets.udp.setBroadcast(createInfo.socketId, true, function(result){
             console.log("The socket with id: " + createInfo.socketId + " is created");
        });
      });
    });
}

在这两款设备上,我首先拨打createSocket(),然后从其中一个设备拨打sendBroadcast(),但在其他设备上没有收到任何内容。

0 个答案:

没有答案