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

?

基于Android的客戶端與服務(wù)器的通訊架構(gòu)設(shè)計(jì)

2016-10-18 09:59:04李翔宇曹路圓
制造業(yè)自動(dòng)化 2016年9期
關(guān)鍵詞:監(jiān)聽服務(wù)器端通訊

劉 源,李翔宇,吳 迪,曹路圓,涂 猛

(1.北京機(jī)械工業(yè)自動(dòng)化研究所,北京 100120;2.機(jī)械科學(xué)研究總院,北京 100044)

基于Android的客戶端與服務(wù)器的通訊架構(gòu)設(shè)計(jì)

劉源1,李翔宇2,吳迪1,曹路圓1,涂猛1

(1.北京機(jī)械工業(yè)自動(dòng)化研究所,北京 100120;2.機(jī)械科學(xué)研究總院,北京 100044)

移動(dòng)辦公正在逐漸改變著企業(yè)的辦公方式,其應(yīng)用范圍也越來越廣泛,從即時(shí)通信、辦公文檔處理、ERP、CRM到員工工作匯報(bào)和考勤等,幾乎涵蓋了企業(yè)辦公的方方面面,根據(jù)實(shí)際工作需要,架構(gòu)了一個(gè)在Android手機(jī)客戶端上實(shí)現(xiàn)與服務(wù)器端通過套接字通訊的企業(yè)員工信息管理系統(tǒng),從而實(shí)現(xiàn)了一個(gè)完成手機(jī)需求的信息通道。

套接字;客戶端;信使;Service

0 引言

無紙化是信息化進(jìn)程的一個(gè)理想目標(biāo),在無紙化和數(shù)字化的進(jìn)程中,企業(yè)既能提高效率,又能實(shí)現(xiàn)環(huán)保。很多企業(yè)正在采取措施改善工作方式。計(jì)算機(jī)辦公很好的實(shí)現(xiàn)了無紙化辦公。而相比于計(jì)算機(jī)操作系統(tǒng)下的辦公軟件,手機(jī)版辦公軟件具有便于攜帶,硬件成本低,聯(lián)網(wǎng)便捷等優(yōu)勢(shì)。由此,文章提出了架構(gòu)于手機(jī)操作系統(tǒng)之上的信息管理系統(tǒng)的一種設(shè)計(jì)方案。

1 通訊架構(gòu)簡(jiǎn)介

套接字通訊是網(wǎng)絡(luò)通訊方式中一種很常用的架構(gòu)方式,一般用于手機(jī)客戶端與服務(wù)器上的服務(wù)器端程序建立可靠的、雙向的、持續(xù)的、點(diǎn)對(duì)點(diǎn)的通訊連接。服務(wù)器端的監(jiān)聽程序用于監(jiān)聽手機(jī)客戶端的連接請(qǐng)求,一旦監(jiān)聽到客戶端發(fā)送過來的連接請(qǐng)求,服務(wù)器端與客戶端就會(huì)建立可靠的連接,客戶端可以向服務(wù)器端發(fā)送用戶登錄信息校驗(yàn)、查詢數(shù)據(jù)庫數(shù)據(jù)表、更新數(shù)據(jù)庫內(nèi)信息表、刪除數(shù)據(jù)庫已知數(shù)據(jù)等請(qǐng)求。同步手機(jī)客戶端的系統(tǒng)時(shí)間為“網(wǎng)絡(luò)提供的時(shí)間”,同時(shí)將計(jì)算機(jī)設(shè)置為自動(dòng)與“times.windows.com”同步,通過在Eclipse上的Log監(jiān)聽客戶端發(fā)送的時(shí)間點(diǎn)以及觀察在服務(wù)端接收數(shù)據(jù)后的斷點(diǎn)前面的時(shí)間點(diǎn),通過實(shí)際測(cè)試比較得到用戶登錄信息校驗(yàn)的處理時(shí)間為285ms,查詢數(shù)據(jù)庫數(shù)據(jù)表的處理時(shí)間為291ms,更新數(shù)據(jù)庫內(nèi)信息表的時(shí)間為263ms,刪除數(shù)據(jù)庫已知數(shù)據(jù)的處理時(shí)間為271ms??梢园l(fā)現(xiàn)套接字通訊的處理時(shí)間均為毫秒級(jí)別,套接字通訊不僅保證了數(shù)據(jù)準(zhǔn)確,而且還做到了數(shù)據(jù)接收的迅速響應(yīng)。由此,可以發(fā)現(xiàn)套接字通訊在企業(yè)辦公領(lǐng)域中具有較好的實(shí)用性、可靠性,靈活性。同理,客戶端也可以接受服務(wù)器端反饋回來的校驗(yàn)結(jié)果、查詢數(shù)據(jù)表得來的用戶需求數(shù)據(jù)、取得數(shù)據(jù)庫操作結(jié)果狀態(tài)代碼等。同時(shí),套接字程序可以通過手機(jī)Wi-Fi、3G、4G等通訊方式實(shí)現(xiàn)更加自由更加流暢的通訊。

2 服務(wù)器端實(shí)現(xiàn)

信息管理系統(tǒng)的服務(wù)器端是在Visual Studio開發(fā)平臺(tái)下采用C#語言編寫的控制臺(tái)應(yīng)用程序,啟動(dòng)服務(wù)器后,當(dāng)按下服務(wù)器的btnStartServer_Click按鈕時(shí),服務(wù)器將啟動(dòng)監(jiān)聽程序,監(jiān)聽程序的部分代碼如下:

private void ConnectListen(object server) //監(jiān)聽程序

{Socket serverSocket=(Socket)server;//建立服務(wù)器端套接字

serverSocket.Listen(20);//啟動(dòng)監(jiān)聽

while (true){

Socket acceptSock=serverSocket.Accept();//建立連接

byte[] byteArray=new byte[112];//定義接收數(shù)組

acceptSock.Receive(byteArray);//采用字節(jié)數(shù)組接收數(shù)據(jù)

Char[] charCode=Encoding.ASCII. GetChars(byteArray);} //將數(shù)組編碼

字符型數(shù)組charCode[]用于接收客戶端發(fā)來的各種請(qǐng)求或命令,當(dāng)接收到的命令是需要進(jìn)行用戶登錄的校驗(yàn)時(shí),服務(wù)器端會(huì)解析數(shù)組內(nèi)的代碼并交由dataConn類來處理,dataConn類所定義的GetValue()方法會(huì)訪問數(shù)據(jù)庫內(nèi)的用戶信息表,得到校驗(yàn)結(jié)果將返回給ConnectListen()方法,如果登錄成功,則ConnectListen()方法會(huì)調(diào)用套接字的發(fā)送程序SendFile()方法。發(fā)送程序SendFile()將數(shù)據(jù)發(fā)往客戶端。圖1描述了服務(wù)器端啟動(dòng)后監(jiān)聽程序與數(shù)據(jù)處理程序的工作流程。

圖1 服務(wù)器端功能圖

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

Android操作系統(tǒng)從其在2008年發(fā)布發(fā)條機(jī)器人1.0版本以來,已取得巨大的成功,如今它已成為主流的手機(jī)操作系統(tǒng)之一,Android是一種以Linux和JAVA為基礎(chǔ)的開放源代碼操作系統(tǒng)。本文中客戶端是在eclipse開發(fā)平臺(tái)下采用JAVA語言編寫,作為套接字程序的客戶端Client,用于發(fā)送請(qǐng)求到服務(wù)器并接收服務(wù)器返回的查詢結(jié)果并調(diào)用UI顯示界面,實(shí)現(xiàn)數(shù)據(jù)對(duì)程序的驅(qū)動(dòng)。但是,在實(shí)際開發(fā)中如果直接把大量的數(shù)據(jù)和算法以及UI的更新都實(shí)現(xiàn)在主程序中,將會(huì)占用大量系統(tǒng)內(nèi)存及造成程序的卡頓,還會(huì)帶來線程安全性等問題。由此,我們采用客戶端Service來處理客戶端通訊數(shù)據(jù)。在Android系統(tǒng)開發(fā)中,Service是一個(gè)重要的組成部分。如果某些程序是不希望用戶看見的,那么可以將這些程序定義在Service中,這樣就可以完成程序的后臺(tái)運(yùn)行(也可以在不顯示界面的情況下運(yùn)行),即Service實(shí)際上相當(dāng)于一個(gè)沒有圖形界面的Activity程序,而且當(dāng)用戶要執(zhí)行某些需要跨進(jìn)程訪問時(shí),也可以使用Service來完成。Service是一個(gè)沒有UI界面的操作組件,主要的功能是為Activity程序提供一些必要的支持,如手機(jī)中的MP3播放軟件等,當(dāng)回到主界面時(shí)這些組件依然可以運(yùn)行,同樣,我們就可以把客戶端的接收程序及發(fā)送程序?qū)懺赟ervice類實(shí)例的內(nèi)部。圖2為客戶端消息傳遞結(jié)構(gòu)圖。

圖2 客戶端信息傳遞結(jié)構(gòu)圖

首先,需要為客戶端建立基于套接字架構(gòu)的客戶端通訊實(shí)例Instance(圖2的通訊4),其通訊代碼如下:

同時(shí),在主界面程序中每次切換主界面都需要與Servie服務(wù)進(jìn)行綁定(圖2的綁定2)。綁定后客戶端的主程序就可以與Service建立實(shí)時(shí)的消息傳遞通道。其代碼如下:

綁定后的Service與運(yùn)行中的Activity程序的通訊通過Messenger信使來實(shí)現(xiàn)(圖2的消息3),從而實(shí)現(xiàn)了基于消息的進(jìn)程間通信。進(jìn)程間的通信其實(shí)是在客戶端發(fā)送一個(gè)Message到服務(wù)端,在服務(wù)端的handler中會(huì)接收到客戶端的信息,然后服務(wù)端對(duì)信息進(jìn)行處理,同樣,如果在服務(wù)端也可以將信息封裝成Message,再發(fā)回給客戶端,客戶端的handler會(huì)接收到信息。服務(wù)器端創(chuàng)建信使Messenger的代碼如下:

在信息管理系統(tǒng)中,信使將會(huì)處理包括用戶登錄信息,工作匯報(bào)請(qǐng)求,請(qǐng)假信息發(fā)布,出差申請(qǐng)等操作為Message消息,通過Messenger發(fā)往Service服務(wù),在Service中,消息會(huì)通過套接字發(fā)往服務(wù)器。服務(wù)器在數(shù)據(jù)流內(nèi)讀取數(shù)據(jù),將數(shù)據(jù)解析成命令,不同的命令將會(huì)觸發(fā)不同的功能。這些功能將會(huì)訪問數(shù)據(jù)庫,讀取所需的字段或者表結(jié)構(gòu),經(jīng)過處理后通過套接字發(fā)往手機(jī)客戶端。同理,由套接字傳遞到Service服務(wù)的數(shù)據(jù)庫數(shù)據(jù)或者登錄狀態(tài)將會(huì)通過Service內(nèi)部的Messenger處理成Message,然后發(fā)往與之綁定的主Activity程序,主程序端的handler負(fù)責(zé)解析Message,消息將會(huì)被解析為手機(jī)操作系統(tǒng)可以讀取的數(shù)據(jù),數(shù)據(jù)將會(huì)驅(qū)動(dòng)手機(jī)客戶端的UI界面。圖3為登錄前后界面變化的情況。

圖3 登錄前后界面變化

4 結(jié)束語

本文提出描述了信息管理系統(tǒng)的登錄功能,在登錄過程中采用了套接字架構(gòu)與跨進(jìn)程通訊信使通道。在管理系統(tǒng)實(shí)現(xiàn)其他功能時(shí)采用同一個(gè)回路即可實(shí)現(xiàn)應(yīng)用功能,只需要斷開Service服務(wù)與主Activity的綁定,切換UI界面后再重新綁定Activity與Service,就可以繼續(xù)使用Service實(shí)例內(nèi)的套接字程序完成遠(yuǎn)程網(wǎng)路通訊。

[1] 李興華.Android開發(fā)實(shí)戰(zhàn)經(jīng)典[M].清華大學(xué)出版社.

Design of communications architecture bentween client and server base on Android

LIU Yuan1,LI Xiang-yu2,WU Di1,CAO Lu-yuan1,TU Meng1

TP39

B

1009-0134(2016)09-0138-03

2016-07-21

劉源(1987 -),男,遼寧葫蘆島人,助理工程師,本科,研究方向?yàn)楝F(xiàn)場(chǎng)制造執(zhí)行系統(tǒng)的軟件實(shí)施。

猜你喜歡
監(jiān)聽服務(wù)器端通訊
《茶葉通訊》簡(jiǎn)介
茶葉通訊(2022年2期)2022-11-15 08:53:56
《茶葉通訊》簡(jiǎn)介
茶葉通訊(2022年3期)2022-11-11 08:43:50
通訊報(bào)道
千元監(jiān)聽風(fēng)格Hi-Fi箱新選擇 Summer audio A-401
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
成功(2018年10期)2018-03-26 02:56:14
網(wǎng)絡(luò)監(jiān)聽的防范措施
電子制作(2017年20期)2017-04-26 06:58:02
通訊簡(jiǎn)史
在Windows中安裝OpenVPN
應(yīng)召反潛時(shí)無人機(jī)監(jiān)聽航路的規(guī)劃
局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)
河南科技(2014年5期)2014-02-27 14:08:21
灵台县| 海南省| 磐石市| 商城县| 崇明县| 中卫市| 诸暨市| 常德市| 逊克县| 郓城县| 瓮安县| 饶阳县| 周宁县| 合江县| 马边| 四川省| 安龙县| 永德县| 醴陵市| 甘孜县| 许昌县| 于都县| 呼伦贝尔市| 海宁市| 南投市| 崇州市| 淳安县| 古浪县| 罗江县| 定远县| 巴南区| 建平县| 临高县| 元氏县| 顺昌县| 佛坪县| 廊坊市| 台东县| 疏附县| 武功县| 石棉县|