收藏
回答

如何在小程序内获取局域网IP,非外网IP

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小游戏 需求 wx.createUDPSocket 工具 7.0.3 2.7.0

- 需求的场景描述(希望解决的问题)


    UDP通讯 wx.createUDPSocket 随着2.7.0基础库一起上线了,准备实验一下,刚一开始就遇到了一个大问题!如何获取本机局域网的IP?

    另外UDP通讯支持组播吗?


---------------------------------------------------------------- 更新分割线 ----------------------------------------------------------------


    手动输入IP测试收发没什么大问题,但有两个问题

    1、为什么发送可以是string/arrayBuffer,接收只有arrayBuffer

    2、局域网UDP为什么还要配置服务器域名?怎么配?目前只能打开调试才能收发成功


---------------------------------------------------------------- 更新分割线 ----------------------------------------------------------------


    UDP不用配服务器域名,是我这边的错觉导致的


- 希望提供的能力


    提供获取本机局域网IP的接口或创建UDP通讯时返回本机局域网IP

最后一次编辑于  2019-05-10
回答关注问题邀请回答
收藏

4 个回答

  • 小程序/小游戏开发-Link
    小程序/小游戏开发-Link
    2019-06-03

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

    2019-06-03
    有用 2
    回复 12
    • kAng
      kAng
      2019-12-31
      轮询要65000多次,最后一位255还不支持,官方倒是开放个获取内网ip的接口呀!mdns又太费事......
      2019-12-31
      回复
    • 杨栋
      杨栋
      2020-02-11
      半年了有新消息么
      2020-02-11
      回复
    • 寻路人
      寻路人
      2020-04-23
      快一年了,有消息吗?  我们想要另外的机器通过UDP协议发送数据到小程序上。
      没法获取本机局域网IP,没法搞呀
      2020-04-23
      1
      回复
    • 杜鹏程
      杜鹏程
      2020-06-26
      啥时候能有接口啊?
      2020-06-26
      回复
    • Afmy梦
      Afmy梦
      2020-08-04
      什么时候可以支持呀?
      2020-08-04
      回复
    查看更多(7)
  • 寻路人
    寻路人
    2020-04-23

    我们也是需要其他机器发送数据到小程序上,

    手机和机器先保持同一个局域网,然后把手机的IP,端口,输入到机器上,

    然后机器那边传输数据过来到小程序上。


    现在只能安卓/IOS原生上搞,小程序上没法搞,不知道官方何时支持

    2020-04-23
    有用 1
    回复 3
    • 奶牛 🐄 (李何)
      奶牛 🐄 (李何)
      2020-09-19
      卸载微信,搞原生开发啊。兄弟,不要纠结
      2020-09-19
      回复
    • 奶牛 🐄 (李何)
      奶牛 🐄 (李何)
      2020-09-19
      卸载微信,搞原生开发啊。兄弟,不要纠结!
      2020-09-19
      回复
    • 奶牛 🐄 (李何)
      奶牛 🐄 (李何)
      2020-09-19
      搞原生开发啊。兄弟,不要纠结!
      2020-09-19
      回复
  • skybosi
    skybosi
    2019-07-28
    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()
          }
        })

    循环扫描 最无奈的办法了

    2019-07-28
    有用
    回复 2
    • 鲤子
      鲤子
      2019-07-29

      我们ip都是10.0.0.x

      手动滑稽

      2019-07-29
      回复
    • 令狐冲
      令狐冲
      2019-11-15
      这个不是办法,家庭局域网是192.168.1.X的居多。但是稍微大一点的局域网都不是192开头的。这不适用于所有的场合。
      2019-11-15
      回复
  • 漫
    2019-05-13

    1、

    获取本机局域网IP--------------这句话是什么意思?

    2、

    你是想要获取本机的  ip  ?

    还是本机所连接的  wifi(也是路由器)  的  ip  ?

    还是本机所在局域网中其它机器的    ip  ?

    3、

    你要用这什么   ip  干什么?


    接收方的ip都是事先定义好,比如小票打印机、报务器,直接给对方发送数据就行,接收方会自动获取到发送方的ip的,真没必要在本机获取本机的ip。

    2019-05-13
    有用
    回复 5
    • Stephen
      Stephen
      2019-05-13

      我们要做的是 小程序与小程序的局域网联机 不是连接智能电器

      2019-05-13
      1
      回复
    • 漫
      2019-05-13回复Stephen

       还真是有需要获取本机ip,和局域网中有哪些机器在线,这样就可以联机了

      2019-05-13
      回复
    • S-J-C
      S-J-C
      2019-08-27
      是本机的再局域网中的IP,可以获取到吗?
      2019-08-27
      回复
    • skybosi
      skybosi
      2019-10-20
      严重怀疑微信聊天记录上传到电脑就是这种局域网通讯实现的
      2019-10-20
      回复
    • 寻路人
      寻路人
      2020-04-23
      需要其他机器发送数据到小程序上,手机和机器先保持同一个局域网,然后把手机的IP,端口,输入到机器上,然后机器那边传输数据过来到小程序上。
      现在只能安卓/IOS原生上搞,小程序上没法搞,不知道官方何时支持
      2020-04-23
      回复
登录 后发表内容