Android培訓班(34) – Android移動開發技術文章_手機開發 Android移動開發教學課程

<!– @page { margin: 2cm } P { margin-bottom: 0.21cm } –>


在init.rc文件裡,可以看到加載下面的服務:


service nexus /system/bin/nexus


socket nexus stream 0660 root system


disabled


 


nexus服務的代碼在目錄:


Android-2.0/system/core/nexus


 


nexus服務主要作用就是監聽網絡命令,提供網絡管理的功能。


下面來分析一下main函數代碼,如下:


int main() {


LOGI(“Nexus version 0.1 firing up”);


 


CommandListener *cl = new CommandListener();


這段代碼創建命令監聽。


 


NetworkManager *nm;


if (!(nm = NetworkManager::Instance())) {


LOGE(“Unable to create NetworkManager”);


exit (-1);


};


這段代碼創建網絡管理器。


 


 


nm->setBroadcaster((SocketListener *) cl);


 


nm->attachController(new LoopController(nm->getPropMngr(), nm));


nm->attachController(new TiwlanWifiController(nm->getPropMngr(), nm, “/system/lib/modules/wlan.ko”, “wlan”, “”));


// nm->attachController(new AndroidL2TPVpnController(nm->getPropMngr(), nm));


nm->attachController(new OpenVpnController(nm->getPropMngr(), nm));


這段代碼設置網絡監聽器。


 


 


 


if (NetworkManager::Instance()->run()) {


LOGE(“Unable to Run NetworkManager (%s)”, strerror(errno));


exit (1);


}


 


if (cl->startListener()) {


LOGE(“Unable to start CommandListener (%s)”, strerror(errno));


exit (1);


}


 


// XXX: well use the main thread for the NetworkManager eventually


 


while(1) {


sleep(1000);


}


這段代碼啟動網絡監聽器,並讓網絡監聽器不斷處理命令。


 


 


LOGI(“Nexus exiting”);


exit(0);


}

發佈留言