Android培訓班(34)

來源:互聯網
上載者:User

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

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.