UDP的功能完善
发布于 6 年前 作者 hetao 1296 次浏览 来自 问答

微信小程序从2.7.0开始终于支持UDP了

希望能完善一下UDP的功能

  1. 希望能添加获取本机局域网IP地址的方法。

  2. 希望能提供广播的方式,现在只能指定IP。

应用场景,我们这边做物联网。通过UDP组播来发送消息来搜索局域网的硬件装置。

5 回复

请问一下,微信小程序UDP 这块,一定要先通过mDNS 发现了对端的ip和端口,才能与对端通讯吗?

如果我事先hardcode住对端的IP 和端口可以直接用udp 通讯吗?

var ping = wx.createUDPSocket()
    if (ping === null) {
      console.log('暂不支持')
      return;
    }
    const dIp = "localhost"
    const dPort = ping.bind()
    ping.send({
      address: dIp,
      port: dPort,
      message: "ping"
    })
    var pong = null
    ping.onMessage(function (res) {
      console.log(res)
      let str = util.newAb2Str(res.message)
      if ("pong" != str) {
        for (var i = 0; i < 256; i++) {
          for (var j = 0; j < 256; j++) {
            var ip = "192.168." + i + "." + j
            var port = res.remoteInfo.port
            console.log("PONG", ip, port)
            if (i == 0 && i == j) {
              pong = wx.createUDPSocket()
              pong.bind()
            } else {
              pong.send({
                address: ip,
                port: port,
                message: "pong"
              })
              util.delay(100)
            }
          }
        }
      } else {
        ping.close()
        that.setData({
          locationUrl_ip: res.remoteInfo.address
        })
        that.initUdpSocket()
      }
    })

无奈啊

后续版本会支持该特性,请关注小程序的功能更新,谢谢!

悄咪咪的告诉你,预计下周会发布2.7.1基础库,里面极有可能包含你要的这两个功能

地址写255.255.255.255 就是广播地址,向本局域网所有的主机发广播数据

回到顶部