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

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

一、创建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服务的端口,消息格式必须是arrayBuffer类型的,不然发送不出去,也不报错!)

首先去蓝奏云下载工具包
https://wwue.lanzoub.com/b052qbpza
密码:6y2d
下载好后后缀名是txt(因为不支持上传js文件),要改为js
微信小程序使用UDP实现局域网通信_第1张图片
然后在项目里用

//这就是编码了
const data = JSON.stringify({
  ip: "1111",
  msg: "哈哈"
})
const encodedString = unescape(encodeURIComponent(JSON.stringify(data)));
const charCodes = encodedString.split("").map(val => val.charCodeAt());
const uint8Array = new Uint8Array(charCodes);
const arrayBuffer = uint8Array.buffer;

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

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

下面的就是解码了

const encoding = require('../../utils/encoding')
const textDecoder = new encoding.TextDecoder('utf-8');
//arrayBuffer就是上报的e.message的值
const decodedString = textDecoder.decode(arrayBuffer);
console.log(decodedString);
// 结果:哈喽!

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

你可能感兴趣的:(微信小程序,udp,小程序)