第九章 看看精彩的世界一使用网络技术 主讲:王海
第九章 看看精彩的世界--使用网络技术 主讲:王海
本章目标 了解网络编程原理 了解基于TCP协议的网络通信机制 能够熟练使用HttpURLConnectioni进行网络通信 能够使用WebViews组件浏览网页 Android软件开发 主讲:王海
Android软件开发 主讲:王海 本章目标 • 了解网络编程原理 • 了解基于TCP协议的网络通信机制 • 能够熟练使用HttpURLConnection进行网络通信 • 能够使用WebView组件浏览网页
网络编程 Android完全支持DK本身所提供的TCP、UDP网络通信的API,也支持URL、 URLConnection等网络通信API Android中常用的网络编程方式: √针对TCP/IP协议的Socketi和ServerSocket √针对HTTP协议的网络编程,如HttpURLConnection和HttpClient √直接使用WebKiti访问网络 Android软件开发 主讲王海
Android软件开发 主讲:王海 网络编程 • Android完全支持JDK本身所提供的TCP、UDP网络通信的API,也支持URL、 URLConnection等网络通信API • Android中常用的网络编程方式: 针对TCP/IP协议的Socket和ServerSocket 针对HTTP协议的网络编程,如HttpURLConnection和HttpClient 直接使用WebKit访问网络
TCP协议 TCP/IP协议规范了网络上的所有通信设备之间的数据往来格式以及传送方式 TCP/IP协议提供一种数据打包和寻址的标准方法,可以在Internet中无差错 地传送数据 TCPP通信协议是一种可靠的、双向的、持续的、点对点的网络协议 便携电脑 服务器 0 作 作 虚拟链路 Socketl Socket2 Android软件开发 主讲:王海
Android软件开发 主讲:王海 TCP协议 • TCP/IP协议规范了网络上的所有通信设备之间的数据往来格式以及传送方式 • TCP/IP协议提供一种数据打包和寻址的标准方法,可以在Internet中无差错 地传送数据 • TCP/IP通信协议是一种可靠的、双向的、持续的、点对点的网络协议 Socket1 Socket2 虚拟链路 I O 操 作 I O 操 作 服务器 便携电脑
网络通信的两种Socket java.net包中包含了网络编程所需的类型,其中基于TCP协议的网 络编程主要使用以下两种Socket: √ServerSocket是服务器套接字,用于监听并接收来自客户端的Socketi连 接 √Socket是客户端套接字,用于实现两台计算机之间的通信 Android软件开发 主讲:王海
Android软件开发 主讲:王海 网络通信的两种Socket • java.net包中包含了网络编程所需的类型,其中基于TCP协议的网 络编程主要使用以下两种Socket: ServerSocket是服务器套接字,用于监听并接收来自客户端的Socket连 接 Socket是客户端套接字,用于实现两台计算机之间的通信
Socket Socket的构造方法两种: Socket(String host,int port) Socket(String host,int port,InetAddress localAddr,int localPort) 【示例】创建Socket对象 try{ Socket s=new Socket("192.168.1.128",28888); ...//Socket通信 }catch (IOException e){ e.printStackTrace(); Android软件开发 主讲:王海
Android软件开发 主讲:王海 Socket • Socket的构造方法两种: Socket(String host,int port) Socket (String host,int port,InetAddress localAddr,int localPort) – 【示例】创建Socket对象 try{ Socket s= new Socket("192.168.1.128" , 28888); ...//Socket通信 }catch (IOException e) { e.printStackTrace(); }
Socket类常用方法 方法 功能描述 public InetAddress getInetAddress() 返回连接到远程主机的地址,如果连接 失败则返回以前连接的主机 public int getPort() 返回Socketi连接到远程主机的端口号 public int getLocalPortO) 返回本地连接终端的端口号 public InputStream getInputStream() 返回一个输入流,从Socketi读取数据 public OutputStream getOutputStream() 返回一个输出流,往Socket中写数据 public synchronized void close() 关闭当前Socket连接 Android软件开发 主讲:王海
Android软件开发 主讲:王海 Socket类常用方法 方法 功能描述 public InetAddress getInetAddress() 返回连接到远程主机的地址,如果连接 失败则返回以前连接的主机 public int getPort() 返回Socket连接到远程主机的端口号 public int getLocalPort() 返回本地连接终端的端口号 public InputStream getInputStream() 返回一个输入流,从Socket读取数据 public OutputStream getOutputStream() 返回一个输出流,往Socket中写数据 public synchronized void close() 关闭当前Socket连接
ServerSocket ServerSocket是服务器套接字,运行在服务器端,在指定的端口上主动监听 来自客户端的Socketi连接 ServerSocket类的构造方法: ServerSocket(int port) ServerSocket(int port,int backlog) ServerSocket(int port,int backlog,InetAddress localAddr) -【示例】创建ServerSocket对象 try ServerSocket server new ServerSocket(28888); catch (IOException e){ e.printstackTrace(); Android软件开发 主讲:王海
Android软件开发 主讲:王海 ServerSocket • ServerSocket是服务器套接字,运行在服务器端,在指定的端口上主动监听 来自客户端的Socket连接 • ServerSocket类的构造方法: ServerSocket(int port) ServerSocket(int port,int backlog) ServerSocket(int port,int backlog,InetAddress localAddr) – 【示例】创建ServerSocket对象 try { ServerSocket server = new ServerSocket(28888); } catch (IOException e) { e.printStackTrace(); }
ServerSocket类常用的方法 方法 功能说明 接收客户端Socketi连接请求,并返回一个与客户端Socket对应 public Socket accept() 的Socket:实例,该方法是一个阻塞方法,如果没有接收到客户 端发送的Socket,则一直处于等待状态,线程也会被阻塞 public InetAddress getInetAddress() 返回当前ServerSocket实例的地址信息 public int getLocalPort() 返回当前ServerSocket实例的服务端口 public void close() 关闭当前ServerSocket:实例 Android软件开发 主讲:王海
Android软件开发 主讲:王海 ServerSocket类常用的方法 方法 功能说明 public Socket accept() 接收客户端Socket连接请求,并返回一个与客户端Socket对应 的Socket实例,该方法是一个阻塞方法,如果没有接收到客户 端发送的Socket,则一直处于等待状态,线程也会被阻塞 public InetAddress getInetAddress() 返回当前ServerSocket实例的地址信息 public int getLocalPort() 返回当前ServerSocket实例的服务端口 public void close() 关闭当前ServerSocket实例
用ServerSocketi进行网络通信的步骤 ①根据指定端口实例化一个ServerSockety对象 ②调用ServerSocket>对象的accept0方法接收客户端发送的Socket对象 ③调用Socket对象的getInputStream0/getOutputStream0方法建立与客户端 进行交互的O流 ④服务器与客户端根据一定的协议进行交互,直到关闭连接 ⑤关闭服务器端的Socket ⑥回到第2步,继续监听下一次客户端发送的Socket请求连接 Android软件开发 主讲:王海
Android软件开发 主讲:王海 用ServerSocket进行网络通信的步骤 ① 根据指定端口实例化一个ServerSocket对象 ② 调用ServerSocket对象的accept()方法接收客户端发送的Socket对象 ③ 调用Socket对象的getInputStream()/getOutputStream()方法建立与客户端 进行交互的IO流 ④ 服务器与客户端根据一定的协议进行交互,直到关闭连接 ⑤ 关闭服务器端的Socket ⑥ 回到第2步,继续监听下一次客户端发送的Socket请求连接