我可以在運行Chrome應用程序的Windows內沒有任何問題地接收廣播數據包。但是,當我使用該應用程序並使用cordova/crosswalk工具進行編譯時,我似乎無法收到任何數據包。我看到wireshark中的所有數據包。我的數據包從172.24.0.42發送,並在172.24.255.255上廣播(255.255.255.255上的廣播在Android上不起作用,但它在Windows chrome應用上工作)。如何在Android上運行的Chrome應用程序中接收UDP廣播數據包
這是我(的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應用程序中獲取任何廣播數據包。不幸的是,我碰到了一堵牆。
發佈註釋和/或文檔的鏈接將有所幫助。 – Xan