Android的网络编程分为2种:Socket网络通信和Http网络通信。
Http通信以xml或者json(JavaScript Object Notation)为载体,相互通信数据。json:一种简单的数据格式,比xml更轻巧。json 是JavaScript原生格式,这意味着在JavaScript中处理json数据不需要任何特殊的API或工具包。
Socket与Http不同的是两个的协议不同:Socket是面向TCP/UDP协议(位于传输层)的,Http是面向HTTP协议(位于应用层)的。
Android对于Http网络通信,提供了标准的Java接口--HttpURLConnection接口和Apache的接口--HttpClient接口。同时Http通信也分为Post方式和Get方式,两个相比较的话,post传送的数据量比较大,安全性也比较发高。
下面展示了Android SDK中的一些与网络有关的API包名:
包 描述
Java.net 提供与联网有关的类,包括流和数据包(datagram)socket、internet协议和常见HTTP处理。该包是一个多功能网络资源
。。。。。。
Socket通信两种方式
1、基于TCP协议
android端实现:
- protected void connectServerWithTCPSocket() {
- Socket socket;
- try { // 创建一个Socket对象,并指定服务端的IP及端口号
- socket = new Socket("192.168.1.32", 1989);
- // 创建一个InputStream用户读取要发送的文件。
- InputStream inputStream = new FileInputStream("e://a.txt");
- // 获取Socket的OutputStream对象用于发送数据。
- OutputStream outputStream = socket.getOutputStream();
- // 创建一个byte类型的buffer字节数组,用于存放读取的本地文件
- byte buffer[] = new byte[4 * 1024];
- int temp = 0;
- // 循环读取文件
- while ((temp = inputStream.read(buffer)) != -1) {
- // 把数据写入到OuputStream对象中
- outputStream.write(buffer, 0, temp);
- }
- // 发送读取的数据到服务端
- outputStream.flush();
- /** 或创建一个报文,使用BufferedWriter写入,看你的需求 **/
- // String socketData = "[2143213;21343fjks;213]";
- // BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
- // socket.getOutputStream()));
- // writer.write(socketData.replace("\n", " ") + "\n");
- // writer.flush();
- /************************************************/
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
服务器端简单实现:
- public void ServerReceviedByTcp() {
- // 声明一个ServerSocket对象
- ServerSocket serverSocket = null;
- try {
- // 创建一个ServerSocket对象,并让这个Socket在1989端口监听
- serverSocket = new ServerSocket(