微信小程序使用UDP实现局域网通信

使用场景:在新的ubuntu服务器中部署一些服务和其他工作时,需要经常从主电脑复制文本到Ubuntu,但即没微信又没vpn,只能手动一个一个字母敲。。于是就想自己写一个局域网通信的小程序练练手,后面再看看如何实现网页版的局域网通信

一、创建UDP实列

const udp = wx.createUDPSocket()

二、绑定自己的服务端口(必须数值类型,每一个UDP实列都需要一个端口绑定,不然无法通信)

udp.bind(1234)

三、监听开始监听数据包消息的事件(告诉你已经准备就绪,是启动监听,但不是监听消息,一定要启动监听不然后面监听不到消息)

udp.onListening((e) => {
    
    
  console.log(e);
  console.log("开始监听消息");
})

四、开始监听消息(这才是监听消息上报)

udp.onMessage((e) => {
    
    
  console.log(e);
})

五、发送消息(255.255.255.255是广播消息,可以改为指定的ip地址,端口就填另一个udp服务的端口,消息格式必须是字符串或数值类型的,不然发送不出去,也不报错!)

//这就是编码了
const data = JSON.stringify({
    
    
  ip: "1111",
  msg: "哈哈"
})

udp.send({
    
    
  address: '255.255.255.255',
  message: data,
  port: 4321
})

六、解析上报的arrayBuffer格式消息

下面的就是解码了,解码需要用到一个utf8ArrayToStr.js文件,我会在文章最下面粘贴出来。

const Utf8ArrayToStr = require('../../utils/utf8ArrayToStr');

const msg = Utf8ArrayToStr(new Uint8Array(res.message))
console.log(msg);
// 结果:{ip: "1111",msg: "哈哈"}

七、到这里就结束了。谢谢阅读

八、后续,两台手机一个安卓一个苹果扫码真机调试有时可以收到消息有时收不到。无语凝噎

九、后续,原来是没写onListening事件,无语啊,不过还好总算弄出来了。

猜你喜欢

转载自blog.csdn.net/lcc2001/article/details/134833004