<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 多網(wǎng)絡(luò )和Linux代理的Android無(wú)線(xiàn)遠程控制系統

多網(wǎng)絡(luò )和Linux代理的Android無(wú)線(xiàn)遠程控制系統

作者: 時(shí)間:2013-01-11 來(lái)源:網(wǎng)絡(luò ) 收藏

自動(dòng)注冊:?jiǎn)?dòng)后,通過(guò)組播地址,每隔30 s向網(wǎng)絡(luò )中發(fā)送一次心跳包,報文為“regist‖ask”,通知網(wǎng)絡(luò )中的被控終端進(jìn)行注冊。監聽(tīng)UDP端口和TCP端口,當接收到被控終端發(fā)送的注冊信息后,取出源IP地址和ID,保存到數據庫中,完成注冊。
發(fā)送消息:通過(guò)界面操作輸入文本內容,向被控終端IP發(fā)送消息。報文為“sendMassage‖content”,第一部分是命令,第二部分是消息內容。
發(fā)送文件:選擇本地文件向被控終端IP發(fā)送。采用Socket發(fā)送報文“sendfile‖filename//filePath”。該報文第1部分是命令,表示發(fā)送文件,第2部分是文件名,第3部分是文件保存路徑。通過(guò)發(fā)送路徑,可以替換被控終端上的文件,實(shí)現數據更新等功能。文件內容在Socket連接的輸入/輸出流中,保存的文件名和路徑從報頭中獲取。
應用管理:首先,向被控終端IP發(fā)送命令,獲取被控終端應用列表;然后,選擇對應操作發(fā)送命令,在被控終端接收到命令后,調用Android接口和Agent代理執行命令。該命令包括4個(gè):install、start、stop、uninstall。例如:報文“install ‖file.a(chǎn)pk”,通過(guò)Socket發(fā)送file.a(chǎn)pk應用到被控端的sdcard/apk目錄下,然后,通過(guò)agent代理執行install安裝命令安裝該應用。此外,start、stop和uninstall三個(gè)命令中,只是調用接口執行,不傳送文件。
3.3 被控終端實(shí)現
自動(dòng)登錄:被控終端啟動(dòng)的時(shí)候,也會(huì )建立兩個(gè)線(xiàn)程和一個(gè)BroadCastReceiver。一個(gè)線(xiàn)程監聽(tīng)組播連接請求的消息,另一個(gè)線(xiàn)程監聽(tīng)TCP端口的命令;廣播接收器接收GSM網(wǎng)絡(luò )發(fā)送的短信命令。第一個(gè)線(xiàn)程中,組播端口監聽(tīng)到控制端發(fā)送的請求后,取得IP地址,然后,發(fā)送帶有自己ID的Socket包,報文內容為regist ‖IMEI號”,包括注冊命令regist和IMEI號(Android終端唯一標識)。第二個(gè)線(xiàn)程中,創(chuàng )建一個(gè)ServerSocket,監聽(tīng)控制端發(fā)送的TCP消息。BroadCastReeeiver接收到短消息廣播后,傳遞給服務(wù)進(jìn)行判斷,看其接收到的是否是命令,如果是命令則執行對應操作。
接收消息:在被控終端,Socket接收到控制端的消息后,會(huì )調用NotificationManager,在A(yíng)ndroid終端通知欄顯示消息,點(diǎn)擊通知會(huì )顯示詳細信息。
接收文件:Socket后臺接收文件,保存在/sdcard/download文件夾下,然后通過(guò)Agent命令執行copy命令,將文件復制到命令里面指定的路徑下。文件名和保存路徑通過(guò)報頭獲取。
管理應用:安裝應用分兩步實(shí)現,第一步接收文件,第二步執行安裝。第一步實(shí)現與上面所講的接收文件相同,只是報文為install‖n ame.a(chǎn)pk”。默認保存到SD卡上的mnt/sdcard/apk路徑下,然后,調用agent執行shell安裝命令install mnt/sdeard/apk/name.a(chǎn)pk。卸載應用時(shí),直接執行接收到的命令uninstall packagename。啟動(dòng)應用時(shí),通過(guò)接口Intent實(shí)現,停止和卸載都是通過(guò)被控終端上的Agent代理實(shí)現?!皊tart‖appName”啟動(dòng)應用的時(shí)候,通過(guò)本地包管理獲取到appName對應的包名packageName,新建一個(gè)Intent,啟動(dòng)包含該包的應用。代碼如下:
f.jpg
通過(guò)shell命令執行kill PID。PID是應用進(jìn)程號,通過(guò)ActivityManager可以獲取到。
設備控制:可以通過(guò)命令例如“shell‖reboot”直接控制重啟。
3.4 Agent代理實(shí)現
在編譯系統內核的時(shí)候,將agent_server編入到路徑/data/agentserver/agent_server下,用以接收命令。調用的時(shí)候,通過(guò)建立一個(gè)本地Socket,通過(guò)數據流發(fā)送shell命令到agent_setwer所在路徑,實(shí)現通信。當agent_server接收到命令后,執行shell命令。

4 測試結果
設計的系統在ZTE U880手機上連接WiFi進(jìn)行測試。圖3為控制端界面,圖4為控制端發(fā)送消息,圖5為被控終端接收消息,圖6為發(fā)送文件,圖7為遠程安裝應用軟件,圖8為遠程卸載應用軟件,圖9為shell命令界面。測試結果表明,系統能夠實(shí)現發(fā)送消息、發(fā)送文件、安裝和卸載應用,以及執行shell命令實(shí)現系統重啟功能。

本文引用地址:http://dyxdggzs.com/article/159562.htm

a.JPG

b.JPG



結語(yǔ)
本文設計了一個(gè)采用C/S模式實(shí)現的Android遠程控制系統??刂贫伺c被控終端之間采用Socket進(jìn)行網(wǎng)絡(luò )通信,在知道對方SIM卡號的情況下,也能通過(guò)GSM發(fā)送短信通信,能夠實(shí)現多種網(wǎng)絡(luò )的穩定通信。通過(guò)能夠實(shí)現root權限的操作,理論上可以實(shí)現對的完全遠程控制。

linux相關(guān)文章:linux教程



上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>