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] <--Network Event--> (NetD) <--Command--> [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交互。



你可能感兴趣的:(Network Daemon(Android Netd)架构和源码分析)