uni-app中安卓板块增加UDP收发

uni-app中安卓板块增加UDP收发

将下面的代码直接建一个udp.js放起来,然后在你要用的时候调用一下udpsend()就可以了,icon参数是控制是不是要接收回收值的。

import {udpsend,returnVal,ret_flag} from '@/js/udp.js';//引用js文件

/*********调用方式***********/
var jsonObj = {};
jsonObj.package = "read";
udpsend(jsonObj,'192.168.10.1',2);


udp.js

var DatagramPacket = plus.android.importClass("java.net.DatagramPacket"); //udp接收信息引用的java类
var DatagramSocket = plus.android.importClass("java.net.DatagramSocket"); //udp创建udp引用java类
var InetAddress = plus.android.importClass("java.net.InetAddress"); //绑定ip引用java类
var InetSocketAddress = plus.android.importClass("java.net.InetSocketAddress"); //绑定ip引用java类
var JString = plus.android.importClass("java.lang.String"); //字符串转换类
var ds = new DatagramSocket(1972); //绑定1972端口
var messageReceived = false;
export var returnVal={};
var jsonArray = [];
export var ret_flag="";
export function udpsend(jsonObj,ipAddress,icon) { 
	    messageReceived = false;
		var Strings=JSON.stringify(jsonObj);
		console.log(Strings);
		var data = new JString(Strings).getBytes("gb2312"); //发送数据转换
		var iAdd = new InetAddress();
		var socket = new DatagramPacket(data, data.length, iAdd.getByName(ipAddress), 1972);//发送地址,端口,数据
		ds.send(socket); //发送数据	
		if(icon>=2){
			udpReceived(icon);
		}	
}  

function udpReceived(icon) {
		jsonArray = [];
		var flag=0;//当有多条的时候接收多条
		while (!messageReceived) { //开始接收数据
			 try{  
				// 设置接收缓存,需要用0填充,否则为 null 无法接收。   
				var buffer = new Array(1024).fill(0);    
				ds.setSoTimeout(30); //设置超时时间
				var dp2 = new DatagramPacket(buffer, buffer.length); //创建接收消息通道
				ds.receive(dp2); //开始接收消息
	
				var dpData = new JString(dp2.getData(),"gb2312").trim(); 
				console.log(dpData);
				if (dpData.length == 0){
					// 接收超时,结束接收  
					messageReceived = true;
				}else{ 
					if(icon==2){
						var j_obj=JSON.parse(dpData);
						if(j_obj.flag>=0){
							var datas=j_obj.data;
							if(j_obj.line==1){
								returnVal.taskid=datas.taskid;
							}
							var tObj={};
							tObj.itemCss="list_item_area";
							jsonArray.push(tObj);
						}
						if(j_obj.flag==j_obj.line){
							returnVal.data=jsonArray;
							console.log(returnVal);
							// 接收超时,结束接收  
							messageReceived = true;  
						}
					}
					if(icon==3){
						var j_obj=JSON.parse(dpData);
						ret_flag=j_obj.flag;
					}
					// console.log('===========收到数据============',dpData);  
				}   
			}catch(ex){  
				messageReceived = true;  
			}  
		}
} 
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值