欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android存储方式之Http存储方式讲解,TCP/IP协议和Http协议之间的关系

程序员文章站 2022-03-18 09:21:12
android的五种存储方式分别是: 1,SharedPreferences 2,file 3,sqlite 4,contentproviter 5,http Http...

android的五种存储方式分别是:

1,SharedPreferences

2,file

3,sqlite

4,contentproviter

5,http

Http

http协议:应用层协议,并且http协议是基于tcp连接的,主要解决的是如何包装协议的

tcp协议:运输层协议,通常也叫做tcp/ip协议,主要解决数据如何在网络中传输

udp协议:运输层协议,用户数据报协议,不可靠的协议,只负责把应用层的协议的数据传送到ip层的数据报,而不管数据是否到达。

Tcp/ip连接:

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭

连接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”。

Http连接:

HTTP协议是建立在TCP协议之上的一种应用,HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。

清单文件中添加权限

TCP/IP协议和Http协议之间的关系:

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据,而socket则是对TCP/IP协议的封装和应用(程序员层面上)。实际上http协议就是建立在tcp/ip协议之上的。

“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也 可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

android 中使用http需要的权限

HTTP规范规定两种请求方法可以包含内容实体:POST和PUT。

GET请求方式是通过把参数键值对附加在url后面来传递的,是文本方式的,参数直接暴露在浏览器的地址栏中,安全性相对较弱。

POST方式就传输方式,将参数打包在http报头中传输,可以是二进制的,不会暴露在浏览器的地址栏中,相当安全,不过相当于GET请求方式,参数获取会变慢,处理效率也会随之降低。

android 网络状态监听

ConnectivityManager cm=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);  
       NetworkInfo info=cm.getActiveNetworkInfo();  
       if(info!=null){  
           Toast.makeText(MainActivity.this, "连网正常"+info.getTypeName(), Toast.LENGTH_SHORT).show();  
       }else{  
           Toast.makeText(MainActivity.this, "未连网", Toast.LENGTH_SHORT).show();  
       }  

google 推荐android使用okhttp,okhttp较好的封装了http的请求,同时支持https以及实现了较简单的dns适配器。

关于okhttp还有一个二次封装的http框架,retrofit。它使用起来更加方便。