android存储方式之Http存储方式讲解,TCP/IP协议和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。它使用起来更加方便。
上一篇: 有线网卡的分类