版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上西安邮电大学通信与信息工程学院实 验 报 告( 2018/ 2019学年 第 2 学期) 课程名称: 移动互联网应用开发 实验名称: Android网络编程基础实验 组成员/学号: 专业/班级: 通信工程1612 指导教师: 金蓉 实验时间: 2019年5月14日 一、实验目的和要求 1、掌握基于串口通信的Android应用程序的开发方法2、掌握基于多线程的Android应用程序的设计开发方法3、掌握基于socket套接字的Android应用程序的设计开发方法二、实验原理1、串口通信串行端口(SeiailPort)简称串口,也称串行通信接口或串行通讯接口(通常指COM
2、接口),是采用串行通信方式的扩展接口。申行接口是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。串口通信用于ASCII码字符的传输。通信使用3根线完成,分别是地线(GND)、发送(TX)、接收(RX)。 由于串口通信是异步模式,端口能够在一根线上发送数据同时在另一根线上接收数据。串口通信最重要的参数是波特率、数据位、停止价和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。因为串口通信涉及到底层比较难,所以谷歌封装了一个比较简单的方法串口类android-serialp
3、ort-api,只要四步我们就可以使用该串口:1)打开串口(及配置串口);2)读串口;3)写串口;4)关闭串口。2、多线程多线程,是指从软件或者硬件上实现多个线程并发执行的技术。当用户需要执行一些耗时操作,比如发起一条网络请求时,考虑到网速等其他因素,服务器未必会立刻响应请求,那么就必须将这类操作放在子线程中运行,这就需要实现多线程编程。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用Thread 编程的概念就叫作“多线程处理(Multithreading)”。Android多线程编
4、程与Java 多线程编程语法相同。线程: Android 中的线程是Android程序执行流的最小单元,即安卓CPU分配的最小单元是线程。当应用程序启动时,Android 首先会开启一个主线程(也就是UI线程),主线程为管理界面中的UI控件,进行事件分发。Thead.currentThread()是当前线程安卓新建线程的两种方法:1) new Thread(new Runnable()Overridepublic void run()/ TODO Auto-generated method stub).start();2) public class MyThread extends Threa
5、d/继承Thread类,并改写其run方法public void run()启动new MyThread().start();Handler消息处理:Handler是主要接受子线程发送的数据, 并用此数据配合主线程更新UI。当应用程序启动时,Android前先会开启一个主线程(他就是UI线程),主线程为管理界面中的UI控件,进行事件分发,比如说,要是点击个 Button,Android会分发事件到Button上,来响应你的操作。如果此时需要一个耗时的操作,例如:联网读取数据,或者读取本地较大的一个文件的时候,就不能把些操作放在主线程中,如果放在主线程中的话,界面会出现假死现象,如果5秒钟还没有
6、完成的话,会收到Android系统的一个错误提示“强制关闭”。这个时候则带要把这些耗时的操作,放在个子线程中,因为子线程涉及到UI更新,子线程中操作是危险的,也就是说,更新UI只能在主线程中更新。这个时候,Handler就出现了。Handler的使用方法:Message消息,是线程间传递的数据,Handler发出Handler,处理者,负责消息的发送(send*)和处理(handleMessage,对消息进行处理,比如更新UI)作用: a:在工作线程发送消息b:在主线程获得消息并处理Message对象arg1,arg2,存放整数数据obj存放Object对象what,指定消息的代码,根据代码执
7、行不同操作setData(Bundle),传递数据量大时使用,可以使用getData()或peekData()方法获得bundleHandler发送消息函数sendMessage(msg)sendEmptyMessag(int what),发送只包含what值的消息3. Socket套接字套接字(Socket) 是通信端点的一种抽象,它提供了一种发送和接收数据的机制,套接字是计机网络中运输层和应用层之间的一种一个中间抽象层,也是一个编程接口,它成对出现,一对套接字Socket的组成就是Socket=(IP地址)1:PORT端口号),(IP 地址2:PORT端口号),一个套接字接客户端,一个套接
8、字接服务器。TCP协议定义: Transmission Control Protocol,即传输控制协议,是一种传输层通信协议面向连接:指的是要使用TCP传输数据,必须先建立TCP连接,传输完成后释放连接,就像打电话一样必须先拨号建立-条连接,打完后挂机释放连接。全双工通信:即一旦建立了 TCP连接,通信双方可以在任何时候都能发送数据。可靠的:指的是通过TCP连接传送的数据,无差错,不丢失,不重复,并且按序到达。面向字节流:流,指的是流入到进程或从进程流出的字符序列。简单来说,虽然有时候要传输的数据流太大,TCP报文长度有限制,不能一次传输完,要把它分为好几个数据块,但是由于可靠性保证,接收方
9、可以按顺序接收数据块然后重新组成分块之前的数据流,所以TCP看起来就像直接互相传输字节流一样,面向字节流。Socket的使用-客户端创建一个Socket对象,并指定服务端的IP及端口号Socket socket=new Socket(“192.168.1.32”,1989);获取发过的数据InputStream inputStream=socket.getInputStream();获取Socket的OutputStream对象并用于发送数据。OutputStream outputStream=socket.getOutputStream();这里注意:需添加网络权限Socket的使用-服务端
10、SeverSocket severSocket=new SeverSocket(1989);调用ServerSocket的accept()方法,接受客户端所发送的请求,如果客户端没有发送数据,那么该线程就停滞不继续Socket socket = serverSocket.accept();从Socket当中得到InputStream对象InputStream inputStream = socket.getInputStream();从Socketd当中得到Outputstream对象OutputStream outputStream = socket.getOutputStream();三、
11、实验内容(一)串口通信实验实验步骤:1)硬件准备:Step1:把协调器安装在平板的串口UART5上:Step2:利用USB线将串口程序运行在实验箱A9板上调试。2)软件编程:Step1:打开Android studio,创建一个项目,项目的名字要求取为“ASChuanKou+各自学号”。Step2:串口所需的相关准备,首先打开SDK Manager,打开SDK Tools,下载NDK, CMake, LLDB (需联网)。Step3:导入相关材料,吧提供的jni和jniLibs文件复制到main文件下,在Project视图下打开java文件,把android_serialport_api文件夹
12、导入java文件下再打开build.graddle文件把externalNativeBuild ndkBuild path src/main/jni/Android.mk 复制到android里。Step4:创建全局变量,命名MyApplication。Step5:在Activity里使用串口Step6:在layout页面布局中修改文本框TextView的ID为tvStep7,:创建全局变量,命名Utils。(2) 线程Thread简单实验实验步骤Step1:打开Android studio,创建一个项目,项目命名“Handler+各自学号”Step2:创建界面Step3:代码实现(3) 群聊
13、天功能Socket通信服务端实验步骤Step1:打开Android studio,创建一个项目,项目命名“SocketServiceApplication+各自学号”Step2:创建界面,首先在drawable创建一个shape属性,这里取名kuang.xmlStep3:创建一个全局的服务端,用于接受各个客户端。Step4:在清单文件里面设置全局变量的name,设置权限。Step5:在Activity里面编写代码(4) 群聊天功能Socket通信客户端实验步骤Step1:打开Android studio,创建一个项目,项目命名“ASScoketClient+各自学号”Step2:创建界面,首先
14、在drawable中创建一个shape属性,取名edit_bg.xmlStep3:界面代码编写Step4:Activity代码编写四、实验结果分析(一)串口通信实验可以读取到温度(2) 线程Thread简单实验点击按钮模拟开启线程,从子线程向主线程发送数据(3) 群聊天功能Socket通信服务端可以看到服务器端可以收到客户端的消息并且可以发送消息给客户端(4) 群聊天功能Socket通信客户端可以看到客户端可以发送消息给服务端并且可以收到服务端的消息五、实验总结1.在面向连接的Socket通信中,服务器如何获知接收到的数据来自哪个地址?可以根据用户名分辨来自哪个客户端。2.Socket有几种类
15、型?编写通信应用时。选择哪一类Socket的原则是什幺?有以下三类:流套接字(SOCK_STREAM):流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。数据报套接字(SOCK_DGRAM):数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP(User Datagram Protocol)协议进行数据的传输。由于数据包套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。原始套接字(SOCK_RAW):
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论