更新记录

1.0.5(2024-01-30)

  1. 优化声明

1.0.4(2024-01-24)

  1. 多端口监听增加iOS支持

1.0.3(2023-09-25)

  1. upd服务端增加监听多端口功能
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:9 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


前言

wrs-udp是udp组件,包含客服端和服务端,支持十六进制、ASCII、iso、utf-8、utf-16等多种字符格式

原生插件通用使用流程

HBuildX集成原生插件请参考:https://www.jianshu.com/p/1418c9e73eb3 或官网https://nativesupport.dcloud.net.cn/NativePlugin/use/use

ios项目配置

  1. 打开manifes.json文件,增加本地网络权限,参考demo:"NSLocalNetworkUsageDescription": "访问本地网络需要您的授权"

  2. 在"app-plus" -> "distribute" -> "ios" -> "capabilities" -> "entitlements"增加广播开启节点,可以参考demo 测试结果:如果不添加com.apple.developer.networking.multicast只能发送对方IP的广播,无法发送255.255.255.255的广播


                "capabilities": {
                    "entitlements": {
                        "com.apple.developer.networking.multicast": true
                    }
                }
  1. 打包的provisioining profile文件需要开通组播权限,参考https://www.jianshu.com/p/c2f6e6aa41a3?v=1682211826634

如果需要十六进制、ASCII、字节之间的转换可以参考工具类插件https://ext.dcloud.net.cn/plugin?id=12803

组件

  1. 客服端组件

var udpClient = uni.requireNativePlugin("wrs-udp-client");
  • 发送广播

                // var array = new Array();
                // array.push(0xFA);
                // array.push(0xFB);
                var ip = this.ip;
                var port = this.port;
                var data = this.data;
                var params = {
                    ip: ip, // 对方接收IP
                    port: port, // 对方接收端口
                    data: data, // data可以是十六进制的数组,如上面的array,也可以是十六进制的字符串,如“FAFB”
                    sendCount: 1, // 发送次数,由于udp是不可靠连接,为了提高到达率,常规业务可能需要发送多次
                    dataType: 0, // 发送数据类型,0: 以十六进制发送,此时data数据为十六进制字符串或整型数组 1:以字符编码发送,此时data数据为字符串
                    charsetName: "UTF_8" // 字符编码,当dataType为1时生效,常用编码为:ISO_8859_1、US_ASCII、UTF_16、UTF_16BE、UTF_16LE、UTF_8
                };
                // params.localPort = 7022; // 绑定本地端口,一般业务用不到
                udpClient.sendData(params);
  1. 服务端组件

var udpServer = uni.requireNativePlugin("wrs-udp-server");
  • 启动服务

                var params = {
                    port: this.serverPort, // 监听端口
                    dataType: 0, // 接收数据类型,0: 以十六进制接收 1:以字符编码接收
                    charsetName: "UTF_8" // 字符编码,当dataType为1时生效,常用编码为:ISO_8859_1、US_ASCII、UTF_16、UTF_16BE、UTF_16LE、UTF_8
                };
                udpServer.startServer(params, (startResult)=>{
                    if(startResult.flag) {
                        this.showLog("服务启动成功");
                    } else {
                        this.showLog("服务启动失败:" + startResult.msg);
                    }
                }, (receiveData)=>{
                    var str = JSON.stringify(receiveData);
                    this.showLog("收到数据:" + str);
                })
  • 停止服务

udpServer.stopServer()
  • 服务端监听多个端口

var moreServer = uni.requireNativePlugin("wrs-udp-more-server");
  • 开启服务

                // 监听端口1
                moreServer.startServer({
                    port: 8889
                }, (startResult)=>{
                    if(startResult.flag) {
                        this.showLog("服务启动成功1");
                    } else {
                        this.showLog("服务启动失败1:" + startResult.msg);
                    }
                }, (receiveData)=>{
                    var str = JSON.stringify(receiveData);
                    this.showLog("收到数据1:" + str);
                })

                // 监听端口2
                moreServer.startServer({
                    port: 8888
                }, (startResult)=>{
                    if(startResult.flag) {
                        this.showLog("服务启动成功1");
                    } else {
                        this.showLog("服务启动失败1:" + startResult.msg);
                    }
                }, (receiveData)=>{
                    var str = JSON.stringify(receiveData);
                    this.showLog("收到数据1:" + str);
                })            
  • 停止服务
                // 关闭端口1
                moreServer.stopServer({
                        port: 8889
                    });

支持定制,联系方式 QQ:252797991

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

隐私、权限声明

1. 本插件需要申请的系统权限列表:

本地局域网网络

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问