uni-app开发安卓APP 使用原生 TCP Socket连接


前言

使用uni-app开发安卓APP的时候,需要与基站服务器产生TCP连接,但是uni-app并没有提供可用的API。


一、TCP连接

HBuliderX的代码如下:

testSocket(){  
			    if (plus.os.name == "Android") {   
					var Socket = plus.android.importClass("java.net.Socket");
					var PrintWriter = plus.android.importClass("java.io.PrintWriter");
					var BufferedWriter = plus.android.importClass("java.io.BufferedWriter");
					var OutputStreamWriter = plus.android.importClass("java.io.OutputStreamWriter");
					var BufferedReader = plus.android.importClass("java.io.BufferedReader");
					var InputStreamReader = plus.android.importClass("java.io.InputStreamReader");
				
					//测试改良 
					var StrictMode = plus.android.importClass("android.os.StrictMode");
					var Build = plus.android.importClass("android.os.Build");
					if (Build.VERSION.SDK_INT > 9) {
						var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
						StrictMode.setThreadPolicy(policy);
					}
					console.log("链接服务器中...")
					var socket = new Socket("10.42.66.207", 6000);
					socket.setSoTimeout(5000);
					// 字节流通向字符流的桥梁
					var inputStreamReader = new InputStreamReader(socket.getInputStream());
					//  从字符输入流中读取文本
					var socketReader = new BufferedReader(inputStreamReader);
					// 从字符流桥接字节流
					var outputStreamWriter = new OutputStreamWriter(socket.getOutputStream());
					var bufferWriter = new BufferedWriter(outputStreamWriter);
					// 创建一个文件并向文本文件写入数据
					var socketWriter = new PrintWriter(bufferWriter, true);
					socketWriter.println('cf 03 00 00 00 00 1e 59 ce 96 7f 01 00 00 a5');
					var msgBeReceived = socketReader.readLine();
					console.log('读取信息',msgBeReceived);
				}
			},

TCP正常连接后,收发数据都可以完成!
记得在onReady生命周期下调用较好。

二、补充

如果想要判断服务器是否断开,可以在

var msgBeReceived = socketReader.readLine();

判断msgBeReceived如果等于null,就认为服务器断开。

写入操作是始终都会成功,所以不能作为服务器是否断开的判断条件。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值