- 需求的场景描述(希望解决的问题)
UDP通讯 wx.createUDPSocket 随着2.7.0基础库一起上线了,准备实验一下,刚一开始就遇到了一个大问题!如何获取本机局域网的IP?
另外UDP通讯支持组播吗?
---------------------------------------------------------------- 更新分割线 ----------------------------------------------------------------
手动输入IP测试收发没什么大问题,但有两个问题
1、为什么发送可以是string/arrayBuffer,接收只有arrayBuffer
2、局域网UDP为什么还要配置服务器域名?怎么配?目前只能打开调试才能收发成功
---------------------------------------------------------------- 更新分割线 ----------------------------------------------------------------
UDP不用配服务器域名,是我这边的错觉导致的
- 希望提供的能力
提供获取本机局域网IP的接口或创建UDP通讯时返回本机局域网IP
后续版本会支持该特性,请关注小程序的功能更新
没法获取本机局域网IP,没法搞呀
我们也是需要其他机器发送数据到小程序上,
手机和机器先保持同一个局域网,然后把手机的IP,端口,输入到机器上,
然后机器那边传输数据过来到小程序上。
现在只能安卓/IOS原生上搞,小程序上没法搞,不知道官方何时支持
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()
}
})
循环扫描 最无奈的办法了
我们ip都是10.0.0.x
手动滑稽
1、
获取本机局域网IP--------------这句话是什么意思?
2、
你是想要获取本机的 ip ?
还是本机所连接的 wifi(也是路由器) 的 ip ?
还是本机所在局域网中其它机器的 ip ?
3、
你要用这什么 ip 干什么?
接收方的ip都是事先定义好,比如小票打印机、报务器,直接给对方发送数据就行,接收方会自动获取到发送方的ip的,真没必要在本机获取本机的ip。
我们要做的是 小程序与小程序的局域网联机 不是连接智能电器
还真是有需要获取本机ip,和局域网中有哪些机器在线,这样就可以联机了
现在只能安卓/IOS原生上搞,小程序上没法搞,不知道官方何时支持