亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用W IN 3 2動態(tài)鏈接庫的TFTP服務(wù)器的設(shè)計與實(shí)現(xiàn)

        2011-09-25 03:24:42姜林美
        關(guān)鍵詞:線程調(diào)用報文

        姜林美

        (華僑大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,福建泉州 362021)

        利用W IN 3 2動態(tài)鏈接庫的TFTP服務(wù)器的設(shè)計與實(shí)現(xiàn)

        姜林美

        (華僑大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,福建泉州 362021)

        為了實(shí)現(xiàn)在設(shè)備相關(guān)的桌面應(yīng)用配置軟件中嵌入簡單文件傳輸協(xié)議(TFTP)服務(wù)功能,開發(fā)針對嵌入式系統(tǒng)的FLASH燒錄及其配置和文件升級的接口程序.考慮到軟件復(fù)用的需要,采用W IN 32動態(tài)鏈接庫技術(shù),整個 TFTP服務(wù)模塊僅由一個動態(tài)鏈接庫文件tftp.dll組成.使用多線程技術(shù),以適應(yīng) TFTP收發(fā)過程與應(yīng)用程序的其他過程并發(fā)執(zhí)行的需要.將所述方法應(yīng)用于實(shí)際的路由器配置產(chǎn)品中,并驗(yàn)證其有效性.

        簡單文件傳輸協(xié)議;用戶數(shù)據(jù)包協(xié)議;傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議;動態(tài)鏈接庫;多線程;文件傳輸;嵌入式系統(tǒng)

        簡單文件傳輸協(xié)議(TFTP)在各類嵌入式產(chǎn)品中應(yīng)用廣泛.在這些嵌入式產(chǎn)品中,主要使用 TFTP來代替JTAG方式的FLASH燒錄[1-2],以及使用 TFTP實(shí)現(xiàn)軟件或配置的在線更新[3].通常,網(wǎng)絡(luò)服務(wù)器總是在裝有網(wǎng)絡(luò)操作系統(tǒng)(如Unix,Window s 2003等)的專用服務(wù)器設(shè)備中實(shí)現(xiàn),而此種方式具有設(shè)備移動不方便,服務(wù)器需要有人值守,以及網(wǎng)絡(luò)服務(wù)安全需要特殊考慮等弊端,故不適用于 TFTP.對于嵌入式設(shè)備而言,往往需要在設(shè)備和小型桌面應(yīng)用軟件中嵌入 TFTP文件傳輸功能.即使用一個專用的桌面應(yīng)用配置軟件與設(shè)備進(jìn)行通信,以完成BOOT文件、映像文件或配置文件的傳輸,而不是使用專用的主機(jī)設(shè)備來充當(dāng)TFTP服務(wù)器的角色.因此,開發(fā)一個通用的TFTP傳輸模塊,以供任意桌面應(yīng)用軟件在需要時調(diào)用就顯得很有價值.本文討論在Visual C++2005(VC 2005)環(huán)境下,使用W IN 32動態(tài)鏈接庫[4]實(shí)現(xiàn) TFTP服務(wù)器的一種方法.

        1 數(shù)據(jù)結(jié)構(gòu)

        1.1 接口

        使用兩個接口ISink和ITftp,來隔離TFTP服務(wù)器的實(shí)現(xiàn)和使用,其定義如圖1所示.

        圖1 接口ISink和ITftp的定義Fig.1 Definitions of interface ISink and ITftp

        在C++中,接口的定義是使用結(jié)構(gòu)體加純虛函數(shù)來完成的.ISink接口由應(yīng)用程序?qū)崿F(xiàn),并被傳遞給DLL.在DLL中,當(dāng)適當(dāng)事件發(fā)生時就會調(diào)用接口中相應(yīng)的事件方法.On Tftp RecvOver()方法在文件接收(即上傳)完畢時被調(diào)用,On Tftp SendOver()方法在文件發(fā)送(即下載)完畢時被調(diào)用,On Tftp Error()方法則在文件接收或發(fā)送出錯時被調(diào)用.3個方法的參數(shù)str Ip和strFilename用于指明是哪一個連接(一個 TFTP服務(wù)器可以同時與多個客戶端建立連接)觸發(fā)的事件, On Tftp Error()方法中的參數(shù) iError-Code給出錯誤發(fā)生時的錯誤代碼,方便在應(yīng)用程序中對出錯情況進(jìn)行處理.

        ITftp接口由DLL實(shí)現(xiàn),是 TFTP服務(wù)器模塊與外層應(yīng)用程序交互的唯一接口.其中:Start()方法用于在參數(shù)uPort指定的端口上啟動 TFTP服務(wù), Stop()方法則用于停止 TFTP服務(wù)并釋放所有資源;Advise()方法用于建立一個外層應(yīng)用中實(shí)現(xiàn)的 ISink接口與DLL中TFTP服務(wù)的一個連接,其唯一參數(shù)pSink用于傳入外層應(yīng)用中實(shí)現(xiàn)的ISink指針;SetRootDir()方法設(shè)置TFTP服務(wù)器文件放置的根目錄,參數(shù)strDir為目錄名.

        1.2 TFTP報文

        相應(yīng)于 TFTP報文格式,采用幾個數(shù)據(jù)結(jié)構(gòu)來處理 TFTP報文,其定義如圖2所示.各個結(jié)構(gòu)體中的字段含義由各字段后的注釋給出.使用 1個類CRequests來管理所有的 TFTP連接,其定義如圖3所示.圖3中:最后一行的TRequest類型使用標(biāo)準(zhǔn)模板庫中的map容器定義:typedef std::map〈std:: string,TRequest*〉TRequests.

        圖2 處理TFTP報文的數(shù)據(jù)結(jié)構(gòu)注釋Fig.2 Comments of the data strutures for processing TFTP datagrams

        圖3 類CRequests的定義Fig.3 Definition of class CRequests

        1.3 TFTP實(shí)現(xiàn)類

        使用CTftp S類來具體實(shí)現(xiàn) TFTP服務(wù)器的功能.該類從接口ITftp繼承,實(shí)現(xiàn)聲明的所有方法,其定義如圖4所示.TFTP服務(wù)器實(shí)現(xiàn)代碼均封裝在CTftp S類中,因此該類的實(shí)現(xiàn)主要是ITftp接口聲明的4個方法的實(shí)現(xiàn).

        (1)Start()方法用于啟動 TFTP服務(wù),進(jìn)行SOCKET庫的實(shí)始化并創(chuàng)建服務(wù)器端SOCKET,讓其監(jiān)聽在指定的端口(默認(rèn)端口號為69).然后,對類變量(包括線程同步變量)進(jìn)行初始化.最后,創(chuàng)建TFTP收發(fā)線程,專門負(fù)責(zé) TFTP連接的建立和TFTP報文的接收與發(fā)送,其入口函數(shù)即CTftp S類的靜態(tài)成員函數(shù)Thread-Func().在創(chuàng)建的線程的時候,CTftp S類的實(shí)例指針將作為線程的參數(shù)傳入ThreadFunc().

        (2)Stop()方法用于停止TFTP服務(wù),要觸發(fā)停止TFTP收發(fā)線程的事件并等待該線程退出,最后釋放所占用的各種資源.另兩個方法的實(shí)現(xiàn)很簡單,限于篇幅不贅述.

        圖4 CTftpS類的定義Fig.4 Definition of class CTftpS

        圖5 TFTP線程函數(shù)處理流程Fig.5 Program flow in TFTP thread function

        2 TFTP服務(wù)的實(shí)現(xiàn)

        TFTP服務(wù)實(shí)現(xiàn)的關(guān)鍵在于 TFTP收發(fā)線程函數(shù) Thread Func(),其處理流程圖如圖5所示.在線程函數(shù)中,通過線程函數(shù)的參數(shù)取得 CTftp S對象的指針,而這只要通過對函數(shù)參數(shù)進(jìn)行一個類型強(qiáng)制轉(zhuǎn)換即可完成.線程的主循環(huán)具有一個唯一的退出條件,即退出線程事件(事件句柄為CTftp S::m_hEventEnd Thread)在主線程中被觸發(fā),通過WINDOWS API函數(shù) Wait For Single Object()可以捕獲該事件.

        在線程的主循環(huán)內(nèi),調(diào)用CTftp S:: Elapse Time()方法掃描當(dāng)前已建立的所有用于下載文件的 TFTP連接,比較當(dāng)前時間與連接記錄(TRequest類型變量)的tm Expiry字段的差值.如果該差值超過了設(shè)定的超時時間(比如3 s),則重發(fā)上一個數(shù)據(jù)報文,檢查連接記錄的iA ttemp tTimes字段;而如果該字段的值(重發(fā)次數(shù))大于3,則觸發(fā)ISink接口的On Tftp Error()事件并掛斷連接.

        調(diào)用CTftp S::Elapse Time()方法后,繼續(xù)調(diào)用CTftp S::RecvData()方法嘗試接收TFTP報文.通過對收到的有效報文進(jìn)行解析,把解析結(jié)果保存在一個 TRequest類型變量中,并將該結(jié)果通過指針類型參數(shù)返回給線程函數(shù).如果通過CTftp S::RecvData()方法接收到任何有效的 TFTP報文,則根據(jù)報文格式的不同分別進(jìn)行處理.

        對于RRQ或WRQ報文,需要調(diào)用CTftpS::Process New()方法建立一個新的TFTP連接.建立連接的過程是:首先從報文中獲取文件名及模式,在設(shè)定的服務(wù)器根目錄下建立一個相應(yīng)的文件.其次,對于RRQ請求需要讀取文件的頭512 B,并將其發(fā)送給客戶端;而對于WRQ請求,則直接發(fā)送一個塊號為零的確認(rèn)報文.最后,生成一個 TRequest數(shù)據(jù),并將其加入CTftp S::m_requests記錄的連接請求列表中.

        對于DA TA報文,先判斷該報文是不是由于超時重發(fā)而形成的重復(fù)報文,若是則直接發(fā)回一個塊號與所收報文塊號相同的確認(rèn)報文;否則,將收到的數(shù)據(jù)寫入服務(wù)器端文件,然后發(fā)回相應(yīng)的確認(rèn)報文.最后,如果收到的數(shù)據(jù)少于512 B,說明已是最后一個數(shù)據(jù)報文,文件傳送完畢,觸發(fā)ISink接口的On T-ftp RecvOver()事件,關(guān)閉該 TFTP連接.

        對于ACK報文,首先判斷塊號與上一次發(fā)送的數(shù)據(jù)報文的塊號是否一致.如果不一致,說明是一個已處理過的重復(fù)報文,可忽略該報文;如果一致,則繼續(xù)判斷上一次發(fā)送的數(shù)據(jù)報文的數(shù)據(jù)長度是否小于512 B,小于512 B說明已是最后一塊數(shù)據(jù),文件傳送完畢,觸發(fā)ISink接口的On Tftp SendOver()事件,關(guān)閉該TFTP連接.

        對于ERR報文處理比較簡單,直接觸發(fā)ISink接口的On Tftp Error()事件并掛斷連接.TFTP線程中調(diào)用的其他CTftpS類的方法的實(shí)現(xiàn)均較為簡單,比如 TerminateConn()方法用于關(guān)閉連接,其操作就是簡單地關(guān)閉相應(yīng)的SOCKET,并從CTftp S::m_requests記錄的連接請求列表中刪除該連接對象.

        3 結(jié)束語

        所討論的TFTP服務(wù)器模塊,最初基于某公司的3G路由器產(chǎn)品的桌面配置軟件而開發(fā),并最終應(yīng)用于該產(chǎn)品.實(shí)踐證明,其應(yīng)用方便,用于產(chǎn)品運(yùn)行穩(wěn)定可靠.需要說明的是,由于協(xié)議的簡單性, TFTP沒有提供任何安全方面的特性[5].

        [1]汪小燕,連曉平,黃燕,等.基于TFTP協(xié)議的嵌入式系統(tǒng)開發(fā)方法設(shè)計與實(shí)現(xiàn)[J].華中科技大學(xué)學(xué)報:自然科學(xué)版,2006,34(12):56-58.

        [2]李虔華,臧習(xí)飛.TFTP協(xié)議在嵌入式系統(tǒng)中的應(yīng)用[J].電腦與電信,2008(2):40-42.

        [3]甘育裕,李婷.在嵌入式Linux中實(shí)現(xiàn) TFTP Server[J].中國有線電視,2005(Z3):4945-4949.

        [4]郭曉鵬,李存斌.Vicsual C++高級編程及其項(xiàng)目應(yīng)用開發(fā)[M].北京:中國水利水電出版社,2004.

        [5]RICHARD SW.TCP/IP Illustrated:Volume 1[M].Boston:Addison Wesley,1995.

        (責(zé)任編輯:黃曉楠英文審校:吳逢鐵)

        Design and Implementation of TFTP Server Based on WIN 32 Dynamic Link Library

        JIANG Lin-mei
        (College of Computer Science and Technology,Huaqiao University,Quanzhou 362021,China)

        To add a TFTP(trivial file transfer protocol)service to a device-related desktop configuration software,a program interface targeted at the flash burning and configuration upgrade of embeded system s is developed.Considering the requirement of the software reusablity,the W IN 32 DLL(dynamic link library)technology is used and the whole TFTP module is encapsulated in one DLL file(tftp.dll).In addition,to satisfy the requirement of concurrent running of the TFTP process and the other process in an application,the multi-thread technology is used.Finally,the validity is proofed by implementing this scheme in an configuration software of a router product.

        trivial file transfer protocol;user datagram protocol;transmission control protocol/internet protocol;dynamic link library;muti-thread;file transfer;embeded system

        TP 393.093

        A

        1000-5013(2011)02-0178-04

        2009-09-18

        姜林美(1976-),男,講師,主要從事計算機(jī)網(wǎng)絡(luò)安全及應(yīng)用軟件開發(fā)的研究.E-mail:clough@hqu.edu.cn.

        猜你喜歡
        線程調(diào)用報文
        基于J1939 協(xié)議多包報文的時序研究及應(yīng)用
        汽車電器(2022年9期)2022-11-07 02:16:24
        CTCS-2級報文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        淺析反駁類報文要點(diǎn)
        中國外匯(2019年11期)2019-08-27 02:06:30
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        淺談linux多線程協(xié)作
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        ATS與列車通信報文分析
        利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
        Linux線程實(shí)現(xiàn)技術(shù)研究
        免费一级肉体全黄毛片| 国产精品无码专区视频| 麻豆亚洲av熟女国产一区二| 91精品国产综合久久国产| 五月婷婷激情六月| 激情内射亚州一区二区三区爱妻| 国产亚洲欧洲aⅴ综合一区| av一区二区三区有码| 国产未成女年一区二区| 国产精品视频一区二区三区四| 黑人巨茎大战俄罗斯美女| 亚洲午夜精品国产一区二区三区| 欧美喷潮久久久xxxxx| 亚洲热线99精品视频| 中文字幕乱码亚洲无限码| 精品少妇一区二区三区四区| 中文字幕亚洲精品第1页| 色综合中文综合网| 亚洲精品国偷拍自产在线观看| 国产日产一区二区三区四区五区| 国产成人精品中文字幕| 亚洲欧美日韩高清一区二区三区 | 成人av资源在线播放| 日韩精品极品视频在线免费| 麻豆国产乱人伦精品一区二区| 亚洲精品久久久久久动漫| 无码人妻精品一区二区蜜桃网站| 亚洲精品粉嫩美女一区| 国产精品女同一区二区免| 水蜜桃视频在线观看免费18| 亚洲色成人WWW永久在线观看| 无码人妻精品一区二区三区在线| 国精产品一区一区三区有限公司杨| 精品厕所偷拍一区二区视频| 深夜福利国产精品中文字幕| 日韩人妖一区二区三区| 999久久久免费精品国产牛牛| 亚洲国产成人久久一区www妖精| 激情 人妻 制服 丝袜| 又爽又黄又无遮挡的视频| 天天摸天天做天天爽水多|