我对整个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()
,但在其他设备上没有收到任何内容。