Android移动开发基础教程课件 第8单元 高级编程.pptx
第8单元高级编程Android移动开发基础教程
8.1网络编程【知识描述】网络编程是指多台设备之间通过网络进行数据交换。网络通信基于“请求响应模型”,即一台设备发送通信请求,另一台设备进行反馈。发送请求端称为客户端,响应请求端称为服务端。例如常见的QQ程序,用户打开QQ客户端程序之后,输入用户名和密码,再单击“登录”,即向腾讯服务端发送登录请求,服务端把请求结果反馈到客户端。Android是基于Java进行开发的,所以JDK中关于网络编程的API在Android中均可使用。
8.1.1TCP、UDP基础两台设备之间进行通信,一定要通过通信协议,即客户端以一定的格式将数据发送出去,服务端接收到数据之后,可以根据同样的协议将数据的内容解析出来。01TCP(TransmissionControlProtocol,传输控制协议)提供的是面向连接、可靠的字节流服务,通信双方必须先建立一个TCP连接,然后才能传输数据。而且TCP还提供了超时重发、数据校验、拥塞控制等功能,保证了数据的可靠传输。02UDP(UserDatagramProtocol,用户数据报协议)应用于需要安全可靠地传输数据的场景,但是开销比较大。UDP应用于对数据可靠性要求不是太高的场景,其优点是开销小,另外UDP没有数据校验、拥塞控制等功能,故而传输速度比较快。
8.1.1TCP、UDP基础对于上层应用来说,无论是TCP还是UDP,通信都包括客户端和服务端,处理流程也具有一般性,具体如表8.1所示。客户端处理流程:(1)根据服务端的IP地址和端口号建立网络连接;(2)建立连接之后,进行数据交换,向服务端发送请求和接收服务端反馈的数据;(3)关闭连接服务端处理流程:(1)服务端启动之后,监听一个固定的端口,被动地等待客户端连接;(2)在客户端连接到服务端之后,服务端可以获取客户端的IP地址等信息,可以进行数据交换;(3)接收客户端发送的数据,然后把处理的结果反馈给客户端;(4)关闭连接表8.1客户端和服务端的处理流程
8.1.2Socket通信任务8.1实现网络通信【任务代码】客户端代码:privatevoidstartClient(){Stringdata=HelloWorld;InputStreamis=null;OutputStreamos=null;Socketc=null;try{c=newSocket(01,7005);//建立连接os=c.getOutputStream();//获得输出流os.write(data.getBytes());//发送数据is=c.getInputStream();//获得输入流byte[]b=newbyte[1024];is.read(b);//接收反馈数据}catch(Exceptione){e.printStackTrace();}finally{try{if(null!=c){c.close();}if(null!=is){is.close();is=null;}if(null!=os){os.close();os=null;}}catch(IOExceptione){e.printStackTrace();}}}
8.1.2Socket通信客户端首先定义了一个Socket对象向服务端请求建立连接,构造函数以服务端的IP地址和端口号作为参数。建立连接之后,调用getOutputStream()获取输出流,向服务端发送数据。【任务代码】服务端代码:privatevoidsta