Reputation: 2277
I am developing a Chrome extension and I want to broadcast a UDP packet on the local network.
I studied this Chrome API.
chrome.sockets.udp.create({}, function(s){
chrome.sockets.udp.bind(s.socketId, address, 0, function(ret){
chrome.sockets.udp.send(s.socketId, data, "172.16.0.0", 5019,
function(sendinfo){console.log(data.byteLength); console.log(sendinfo);})})})
If I specified a address like 172.16.0.0
, the above code is OK. But If I changed 172.16.0.0
to 255.255.255.255
, I got {resultCode: -10}
which indicates an error.
My manifest.json:
{
"manifest_version": 2,
"name": "UDP",
"description": "Test",
"version": "2",
"minimum_chrome_version": "23",
"app": {
"background": {
"scripts": ["main.js"]
}
},
"sockets":{
"udp": {"send":["*:*"], "bind":["*:*"]}
},
"permissions":["system.network"]
}
By the way, I tried chrome.socket which works fine even on broadcast. But the API is deprecated starting with Chrome 33.
Upvotes: 10
Views: 5200
Reputation: 2277
Since Chrome 44, we have setBroadcast
API.
https://developer.chrome.com/apps/sockets_udp#method-setBroadcast
Upvotes: 5
Reputation: 51
Haven't tried it yet, but I found this:
"sockets": {
"udp": {
"bind": "*",
"send": "*",
"multicastMembership": ""
}
}
The empty string value for
"multicastMembership"
isn't obvious at all, I had to resort to reading the C++ unit tests to find out the correct value.
Upvotes: 2