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,就认为服务器断开。
写入操作是始终都会成功,所以不能作为服务器是否断开的判断条件。
上一篇:
Java架构师技术进阶路线图