【问题标题】:How to do UDP broadcast using chrome.sockets.udp API?如何使用 chrome.sockets.udp API 进行 UDP 广播?
【发布时间】:2014-06-09 10:05:28
【问题描述】:

我正在开发一个 Chrome 扩展程序,我想在本地网络上广播一个 UDP 数据包。

我研究了这个 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);})})})

如果我指定了172.16.0.0这样的地址,上面的代码就可以了。但是如果我将172.16.0.0 更改为255.255.255.255,我会得到{resultCode: -10},这表示错误。

我的 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"]
}

顺便说一句,我试过chrome.socket,即使在广播中也能正常工作。但从 Chrome 33 开始,该 API 已被弃用。

【问题讨论】:

  • P.S.我知道这是一个较旧的 API,但这应该适用于较新的 chrome.sockets.udp
  • 我试过 chrome.socket。这很好。但同样的方法(255.255.255.255)似乎不适用于新的 API。
  • 有什么消息吗?我也无法发送 UDP 广播...
  • chrome.sockets.udp 允许用于扩展,还是只允许应用?

标签: google-chrome google-chrome-extension udp broadcast


【解决方案1】:

从 Chrome 44 开始,我们有了setBroadcast API。

https://developer.chrome.com/apps/sockets_udp#method-setBroadcast

【讨论】:

    【解决方案2】:

    还没试过,但我发现了这个:

    "sockets": {
      "udp": {
        "bind": "*",
        "send": "*",
        "multicastMembership": ""
      }
    }
    

    In this bug report

    "multicastMembership" 的空字符串值根本不明显,我不得不求助于阅读 C++ 单元测试来找出正确的值。

    【讨论】:

    • 好像不行。错误代码:net::ERR_ACCESS_DENIED
    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 2010-09-25
    • 2014-05-16
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多