国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android的實(shí)時(shí)位置共享及應(yīng)用研究

2016-12-14 05:24:40章義剛
皖西學(xué)院學(xué)報(bào) 2016年5期
關(guān)鍵詞:緩沖區(qū)線程命令

章義剛

(合肥學(xué)院,安徽 合肥 230601)

?

基于Android的實(shí)時(shí)位置共享及應(yīng)用研究

章義剛

(合肥學(xué)院,安徽 合肥 230601)

給出了地理位置信息實(shí)時(shí)共享的應(yīng)用解決方案??蛻舳碎g通過(guò)服務(wù)器的轉(zhuǎn)發(fā)通信,實(shí)現(xiàn)了地理位置信息共享,文字信息交流與電子地圖服務(wù)等功能。服務(wù)器端使用I/O完成端口機(jī)制對(duì)多用戶請(qǐng)求進(jìn)行并發(fā)處理,滿足請(qǐng)求回復(fù)低延遲的要求;服務(wù)器端數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)通過(guò)最小化數(shù)據(jù)內(nèi)存拷貝次數(shù)以及對(duì)多個(gè)數(shù)據(jù)包聚合傳輸以最大化網(wǎng)絡(luò)帶寬的利用率等技術(shù),保證數(shù)據(jù)轉(zhuǎn)發(fā)的實(shí)時(shí)性;按客戶端的功能與交互分開(kāi)的原則,將客戶端的功能封裝成可方便移植的客戶端庫(kù),簡(jiǎn)化了多平臺(tái)客戶端的開(kāi)發(fā)。

電子地圖;I/O完成端口;位置共享

隨著互聯(lián)網(wǎng)及計(jì)算機(jī)的發(fā)展和不斷普及,地圖已經(jīng)從紙上走到了互聯(lián)網(wǎng)、個(gè)人電腦和手持設(shè)備里了[1,2]。尤其是智能手機(jī),4G網(wǎng)絡(luò),android系統(tǒng)等的發(fā)展,使現(xiàn)在的手持設(shè)備具備上網(wǎng)速度快,系統(tǒng)開(kāi)放等優(yōu)點(diǎn)。人們可以通過(guò)手持設(shè)備上的電子地圖很容易地搜索到各種感興趣的地點(diǎn),行車路線及公交線路等,通過(guò)把電子地圖與GPS定位導(dǎo)航相結(jié)合起來(lái),使出行變方便了[3](P388-401),[4](P103-123)?,F(xiàn)如今,越來(lái)越多的行業(yè)都在使用電子地圖,尤其是在 GPS 導(dǎo)航中,它讓我們的生活及出行變得更加方便快捷[5,6]。

本系統(tǒng)便是電子地圖下的一種應(yīng)用,服務(wù)器利用IOCP技術(shù)實(shí)現(xiàn)將被需要的地理位置信息轉(zhuǎn)發(fā)給其他人,實(shí)現(xiàn)人與人之間直觀的共享地理位置信息??蛻舳碎g通過(guò)服務(wù)器的轉(zhuǎn)發(fā)通信,實(shí)現(xiàn)了地理位置信息共享,文字信息交流與電子地圖服務(wù)等功能。

1 系統(tǒng)體系結(jié)構(gòu)與交互設(shè)計(jì)

1.1 服務(wù)器結(jié)構(gòu)

服務(wù)器的體系結(jié)構(gòu)采用了分層的體系結(jié)構(gòu),提供的主要的功能模塊包括:網(wǎng)絡(luò)通信模塊、數(shù)據(jù)存儲(chǔ)模塊、用戶管理模塊、邏輯處理模塊、服務(wù)器界面模塊。如圖1所示。

圖1 服務(wù)器模塊組成

網(wǎng)絡(luò)通信模塊負(fù)責(zé)數(shù)據(jù)的傳輸和管理連接,上層只需要處理網(wǎng)絡(luò)通信模塊產(chǎn)生的幾個(gè)事件接口即可,如收到連接請(qǐng)求,收到數(shù)據(jù),發(fā)送數(shù)據(jù)成功,連接斷開(kāi)。

數(shù)據(jù)存儲(chǔ)模塊負(fù)責(zé)保存和索引用戶的信息等所有需要保存的數(shù)據(jù)。

用戶管理模塊負(fù)責(zé)管理所有用戶狀態(tài)信息,管理用戶的命令緩沖區(qū)等內(nèi)存緩沖區(qū)。

邏輯處理模塊是與協(xié)議相關(guān)的層,集成了許多重要的邏輯處理過(guò)程,如:加解密網(wǎng)絡(luò)數(shù)據(jù)(無(wú)法加解密用戶密碼),解析命令和數(shù)據(jù),命令的執(zhí)行邏輯,回復(fù)命令等。邏輯處理模塊同時(shí)給界面層提供了訪問(wèn)或操作用戶的接口,如給所有在線用戶發(fā)廣播消息[7,8]。

服務(wù)器界面模塊負(fù)責(zé)與管理員交互,實(shí)現(xiàn)對(duì)服務(wù)器的控制。

服務(wù)器端線程:界面線程,TCP監(jiān)聽(tīng)線程,TCP數(shù)據(jù)收發(fā)線程,UDP數(shù)據(jù)收發(fā)線程。線程數(shù)不是固定的,某些線程可根據(jù)CPU內(nèi)核數(shù)動(dòng)態(tài)創(chuàng)建。

1.2 客戶端結(jié)構(gòu)

為了能夠?qū)Χ嘟K端與多系統(tǒng)提供支持,客戶端分成了客戶端界面程序和Client SDK兩部分(如圖2所示)。Client SDK用于提供二次開(kāi)發(fā),以方便系統(tǒng)移植[9](P444-448)。

圖2 客戶端的組成

客戶端的網(wǎng)絡(luò)通信模塊和服務(wù)器的網(wǎng)絡(luò)通信模塊的職責(zé)是相同的,但它們的功能需求是完全不同的,所以它們的具體設(shè)計(jì)是不同的??蛻舳说木W(wǎng)絡(luò)通信部分使用的是Socket編程,每個(gè)通道只有一條連接,只開(kāi)一個(gè)線程。

數(shù)據(jù)存儲(chǔ)模塊。負(fù)責(zé)存儲(chǔ)用戶每次登錄成功所使用的用戶名和密碼,同時(shí)還保存一些其他信息(如用戶的好友列表,啟動(dòng)時(shí)畫(huà)面廣告)。通過(guò)將信息使用一定的格式(xml、json、google protobuf)保存到文件中,當(dāng)程序下次啟動(dòng)時(shí),從文件中讀出數(shù)據(jù),對(duì)界面進(jìn)行初始化。

內(nèi)存管理模塊負(fù)責(zé)維護(hù)用戶的狀態(tài),管理用戶的命令緩沖區(qū)等內(nèi)存緩沖區(qū)。

邏輯處理模塊是協(xié)議相關(guān)模塊,集成了主要的處理邏輯,如加解密網(wǎng)絡(luò)數(shù)據(jù),加密用戶密碼,打包命令數(shù)據(jù),解析服務(wù)器命令回復(fù),打包、解析位置信息數(shù)據(jù)等。

api接口負(fù)責(zé)與應(yīng)用程序交互。

客戶端程序負(fù)責(zé)與用戶交互。

Client SDK線程:邏輯處理線程,TCP數(shù)據(jù)收發(fā)線程,UDP數(shù)據(jù)收發(fā)線程。

1.3 服務(wù)端與客戶端交互設(shè)計(jì)

系統(tǒng)的交互,即客戶端與服務(wù)器的交互,良好的交互設(shè)計(jì)可以為客戶端(尤其是手機(jī)用戶)節(jié)省流量,同時(shí)避免交互出錯(cuò)概率。

圖3 客戶端與服務(wù)器交互圖

2 客戶端的實(shí)現(xiàn)

2.1 命令解析

命令的解析工作CCommandParse類實(shí)現(xiàn)。它將命令分解為命令類型,命令的參數(shù)對(duì)。解析過(guò)程如圖4。圖中出現(xiàn)的“獲取參數(shù)”操作是一個(gè)宏定義,由于獲取參數(shù)的操作流程具有相似性,可以通過(guò)宏進(jìn)行整合。

圖4 命令解析過(guò)程圖

#define SIVISION { 〗 if(n > m_max) 〗 break; 〗 if((_Src - pc) > 1){ 〗 if(*(pc+1) == '-' && mh){ 〗 m_param[n].prefix = new char[_Src - pc]; 〗 dst = m_param[n].prefix; 〗 }else{ 〗 m_param[n].value = new char[_Src - pc]; 〗 dst = m_param[n].value; 〗 n ++; 〗 } 〗 while(pc != _Src) 〗 *dst++ = *++pc; 〗 *--dst = '

栖霞市| 山东省| 汽车| 稷山县| 天津市| 合阳县| 松溪县| 页游| 肇源县| 喜德县| 洞头县| 临朐县| 砚山县| 怀安县| 宜兴市| 磴口县| 休宁县| 岑溪市| 谢通门县| 涿州市| 兴和县| 安福县| 蛟河市| 青冈县| 汉阴县| 神农架林区| 夏津县| 盐山县| 肥城市| 华池县| 四子王旗| 白河县| 徐州市| 清远市| 德令哈市| 宁津县| 宜川县| 阿瓦提县| 辽源市| 大余县| 大丰市|