android 内核 netlink 上报,Network Daemon(Android Netd)架构和源码分析
平台: RK3066 ARM9双核 Android4.1
一 Network Daemon(netd)功能概述:
Netd是Android的网络守护进程。NetD是个网络管家,封装了复杂的底层各种类型的网络(NAT,PLAN,PPP,SOFTAP,TECHER,ETHO,MDNS等),隔离了底层网络接口的差异,给Framework提供了统一调用接口,简化了网络的使用。NetD主要功能是:第一、接收Framework的网络请求,处理请求,向Framework层反馈处理结果;第二、监听网络事件(断开/连接/错误等),向Framework层上报。
NetD程序的大概逻辑: [Kernel] (NetD) [Framework]。事件和命令传送采用跨进程通信机制(SOCKET)。
二 Network Daemon(netd)源码分析:
Netd:
/System/netd
/system/core/libsysutils/src
/system/core/include/sysutils
Framework:
/frameworks/base/services/java/com/android/server
int main() {
NetlinkManager *nm = NetlinkManager::Instance();
/*实例化一个命令监听示例,监听Framework命令,处理完成后恢复Framework层*/
CommandListener *cl = new CommandListener();
nm->setBroadcaster((SocketListener *) cl);
/*开启监听内核网络事件线程*/
nm->start();
/*cl 开启线程,监听 framework 层下发的命令,并调用相关函数处理 */
cl->startListener();
/*设置为内网DNS模式*/
setenv("ANDROID_DNS_MODE", "local", 1);
DnsProxyListener *dpl = new DnsProxyListener();
dpl->startListener();
/*多播DNS*/
MDnsSdListener *mdnsl = new MDnsSdListener();
mdnsl->startListener();
}
三 Network Daemon(netd)架构分析:
四 如果与Network Daemon(netd)交互:
网络守护进程netd,有很多功能,程序可以通过它查询各种网络的状态或拦截各种网络事件。下面就用以发布一个网络服务为例说明,具体的一个程序如何与net交互。
android 内核 netlink 上报,Network Daemon(Android Netd)架构和源码分析相关推荐
- Android仿QQ5.0侧滑菜单ResideMenu的使用和源码分析
本文出自Cym的博客(http://blog.csdn.net/cym492224103) ResideMenu github:https://github.com/SpecialCyCi/Andro ...
- Android RxJava(一) create操作符的用法和源码分析
RxJava(一) create操作符的用法和源码分析 转载于:https://www.cnblogs.com/zhujiabin/p/7291901.html
- Android Camera 系统架构源码分析
Android Camera 系统架构源码分析(1)---->Camera的初始化 Android Camera 系统架构源码分析(2)---->Camera的startPreview和s ...
- android lottie字体json,从json文件到炫酷动画-Lottie实现思路和源码分析
从json文件到炫酷动画-Lottie实现思路和源码分析,Lottie是最近Airbnb开源的动画项目,支持Android.iOS.ReactNaitve三个平台,本文分析主要Lottie把json文 ...
- Tensorflow源码解析1 -- 内核架构和源码结构
1 主流深度学习框架对比 当今的软件开发基本都是分层化和模块化的,应用层开发会基于框架层.比如开发Linux Driver会基于Linux kernel,开发Android app会基于Android ...
- android 代码 drawable,Android Drawable完全解析(一):Drawable源码分析(中)
呃...我不是故意要凑篇幅写个什么上下篇,实在是因为Drawable源码有点长,一篇写不下啦O(∩_∩)O~ 鉴于源码一般较长,以后所有源码分析的部分,英文注释非必要情况都不再保留! 2:Drawab ...
- Android 12 新APP启动画面(SplashScreen API)简介源码分析
以往的启动画面 默认情况下刚启动APP时会显示一会白色背景 如果把这个启动背景设置为null,则一闪而过的白色会变成黑色 如果把启动Activity设置为背景透明[< item name=&qu ...
- spark中local模式与cluster模式使用场景_Spark内核及通信框架概述-针对面试(后面有源码分析)...
Spark 内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark的任务调度机制.Spark的内存管理机制.Spark核心功能的运行原理等.熟练掌握Spar ...
- 蚂蚁金服分布式链路跟踪组件 SOFATracer 数据上报机制和源码分析 | 剖析
2019新春支付宝红包技术大揭秘在线峰会将于03-07日开始,点击这里报名届时即可参与大牛互动. SOFA Scalable Open Financial Architecture 是蚂蚁金服自主研发 ...
最新文章
- ThoughtWorks雷达上的新奇变化
- char* 大小_SQL Server中char, nchar, varchar和nvarchar数据类型有何区别
- c#事件的发布-订阅模型_微信灰度测试订阅号付费功能,小米推出最便宜5G套餐,腾讯辟谣高管猝死赔钱事件,核心期刊发布十岁儿童文章,这就是今天的其他大新闻!...
- 32 SD配置-合作伙伴确认-设置客户主数据的合作伙伴确定
- jquery-weui滚动加载问题解决
- spss和python stata matlab_(SPSS,Matlab,stata,Python)相关性?
- Mysql学习总结(65)——项目实战中常用SQL实践总结
- LINQ语法之into
- dev gridcontrol 单箱效果
- 如何用Java的Robot完成模拟鼠标移动和键盘输入(可应用刷网课)
- 第二章 ARM体系结构与指令集——ARM
- C++复习(二)——绘制余弦函数图像
- 计算机软件期刊是不是中文核心,2020计算机测量与控制是什么期刊_计算机测量与控制是核心期刊吗_计算机测量与控制官网...
- C语言---编译器、编辑器
- php 防挂马,织梦dedecms安全设置防挂马教程
- 关于火车采集文章发布到wordpress后台待审核模块的设置
- matlab中三维数组,维数转换
- 源码自动生成流程图软件介绍
- 共射级放大电路—实现最大输出振幅的方法竟如此简单
- 哈尔滨计算机职业学校赵梓琦,哈尔滨赛区复选晋级名单
热门文章
- PyTorch图像分类从模型自定义到测试
- Qt实用技巧:使用OpenCV库的视频播放器(支持播放器操作,如暂停、恢复、停止、时间、进度条拽托等...
- 酷炫的深度学习网络图怎么绘制出来的?
- 一道有关动态规划(Dynamic Programming)的网易面试题
- GitHub代码一键转VS Code:只需+1s
- 基于OpenCV的人员剔除
- MySQL删除表及删除表数据操作
- mysql5.6.20二进制安装
- CentOS 6/7 忘记root密码,重新设置的方法
- spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)...