<!– @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);
}