首页 > 其他分享 >Android 网络架构

Android 网络架构

时间:2022-11-08 21:59:17浏览次数:70  
标签:架构 网络 TCP 响应 客户 OKHttp 服务器 Android 连接

Android 网络框架

android app开发中的最著名的几个网络框架。

android 原生 HttpUrlConnection(2.3以上 ), HttpClient(andriod 2.3 以下)

volley(google 推出)

适合高频低数据量的网络访问,数据量大时就很糟糕。

OKHttp

OkHttp 是一个相对成熟的解决方案,据说 Android4.4 的源码中可以看到 HttpURLConnection 已经替换成 OkHttp 实现了。在 Android 6.0 中底层的源码已经使用了 OKHttp ,这个是可以确定的。

retrofit

其实 retrofit 是根据 OKHttp 封装的框架,它的底层网络请求就是使用OKHttp的。
优点:
(1)支持 okhttp
(2)注解处理,简化代码
(3)支持上传和下载文件
(4)支持自己更换解析方式
(5)支持多种http请求库
官网或相关地址:
OKHttp 的 github 地址:https://github.com/square/retrofit

长连接和短连接

TCP连接会经过3次握手,传输数据,4次挥手过程。 如果tcp连接 长时间(2个小时)没有数据传输,则会主动断开。

长连接

建立连接-> 数据传输-> 保持连接(发送心跳数据) -> 数据传输-> ...断开连接

可以开启tcp的keepalive 功能,如果一个给定的连接在两小时内没有任何的动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下4个状态之一:

  1. 客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。
  2. 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务端将不能收到对探测的响应,并在75秒后超时。服务器总共发送10个这样的探测 ,每个间隔75秒。如果服务器没有收到一个响应,它就认为客户主机已经关闭并终止连接。
  3. 客户主机崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
  4. 客户机正常运行,但是服务器不可达,这种情况与2类似,TCP能发现的就是没有收到探查的响应。

场景: 数据库,RTC等

短连接

连接→数据传输→关闭连接;

短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接
(管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段);

场景: HTTP

HTTP 协议

  • 请求格式
    请求行,请求头,空行,消息体
  • 响应格式
    状态行,相应头,空行,消息体

标签:架构,网络,TCP,响应,客户,OKHttp,服务器,Android,连接
From: https://www.cnblogs.com/happy-to-study/p/16871334.html

相关文章

  • 计算机网络应用层:HTTP和电子邮件
    计算机网络应用层应用层所讨论的对象可以简单理解为端系统上的网络应用程序。因特网网络体系结构分为5层:应用层、传输层、网络层、链路层、物理层。应用程序体系结构由应......
  • 84-《P7云原生架构师2期》01-云原生背景知识_ev.
         ......
  • 第13章 TCP/IP和网络编程
    TCP/IP协议TCP/IP协议TCP代表传输控制协议,IP代表互联网协议。目前有两个版本的IP,即IPv4和IPv6。IPv4使用32位地址(目前使用最多),IPv6使用128位地址。TCP/IP的组织结构氛围......
  • r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现|附代码数据
    原文链接:http://tecdat.cn/?p=3795Glmnet是一个通过惩罚最大似然关系拟合广义线性模型的软件包。正则化路径是针对正则化参数λ的值网格处的lasso或ElasticNet(弹性网络)惩......
  • Android架构
    组成架构 学习目标1、掌握Android的组成架构2、掌握Android各层架构的作用 Linux内核层:为安卓设备的各种硬件提供底层驱动系统库和Android运行时层:为安卓系统提......
  • Android 活动组件
    活动(Activity)学习目标1、了解Activity的概念2、掌握Activity的创建和启动方法3、掌握Activity之间消息传递的方法4、掌握Activity的生命周期5、掌握Activity的启动......
  • Linux高并发网络编程开发——epoll-udp
    在学习Linux高并发网络编程开发总结了笔记,并分享出来。10-Linux系统编程-第13天(epoll-udp)目录:一、学习目标二、复习1、通过gdb定位段错误的位置2、TCP状态转换复习三、epoll......
  • Linux高并发网络编程开发——网络编程基础-socket
    在学习Linux高并发网络编程开发总结了笔记,并分享出来。10-Linux系统编程-第10天(网络编程基础-socket)目录:一、Linux网络编程阶段二、网络基础1、网络开发两种设计模式2、协......
  • Linux高并发网络编程开发——tcp三次握手-并发
    在学习Linux高并发网络编程开发总结了笔记,并分享出来。10-Linux系统编程-第11天(tcp三次握手-并发)  一、学习目标1、熟练掌握三次握手建立连接过程2、熟练掌握四次挥手断开......
  • 【操作系统】典型内核架构对比
    目录一、架构分类1、宏内核2、微内核3、混合内核:二、Linux三、iOSDarwin四、WindowsNT参考:(1)操作系统实战45讲(2)Linux系统——架构浅析一、架构分类内核是操作系......