- 需求的场景描述(希望解决的问题)
UDP通讯 wx.createUDPSocket 随着2.7.0基础库一起上线了,准备实验一下,刚一开始就遇到了一个大问题!如何获取本机局域网的IP?
另外UDP通讯支持组播吗?
---------------------------------------------------------------- 更新分割线 ----------------------------------------------------------------
手动输入IP测试收发没什么大问题,但有两个问题
1、为什么发送可以是string/arrayBuffer,接收只有arrayBuffer
2、局域网UDP为什么还要配置服务器域名?怎么配?目前只能打开调试才能收发成功
---------------------------------------------------------------- 更新分割线 ----------------------------------------------------------------
UDP不用配服务器域名,是我这边的错觉导致的
- 希望提供的能力
提供获取本机局域网IP的接口或创建UDP通讯时返回本机局域网IP
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() } }) |
循环扫描 最无奈的办法了