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

        ?

        基于XML的通用接口通信調(diào)試系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)

        2022-09-09 05:50:42張國超金巧園何旭代中華
        電子技術(shù)與軟件工程 2022年12期
        關(guān)鍵詞:通信協(xié)議字段報(bào)文

        張國超 金巧園 何旭 代中華

        (中國船舶重工集團(tuán)公司第七二六研究所 上海市 201108)

        1 研究現(xiàn)狀

        今年來計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)應(yīng)用的蓬勃發(fā)展,各類基于網(wǎng)絡(luò)編程技術(shù)的應(yīng)用軟件也伴隨著各種應(yīng)用場景大規(guī)模的涌現(xiàn)出來,網(wǎng)絡(luò)應(yīng)用軟件編寫好后除了自身軟件的調(diào)試外,還需要利用網(wǎng)絡(luò)接口模擬器驗(yàn)證網(wǎng)絡(luò)通信功能的正確性,因此隨之而來的網(wǎng)絡(luò)開發(fā)調(diào)試的需求越來越迫切。傳統(tǒng)的做法是根據(jù)每個(gè)項(xiàng)目的需求和具體的協(xié)議要求編寫不同的網(wǎng)絡(luò)接口調(diào)試模擬器,綁定指定的IP地址和端口號(hào),并根據(jù)需求設(shè)計(jì)界面顯示內(nèi)容,網(wǎng)絡(luò)接收到數(shù)據(jù)后根據(jù)約定好的接口通信協(xié)議進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)報(bào)文的解析,將解析后的數(shù)據(jù)送到顯示界面進(jìn)行顯示,數(shù)據(jù)報(bào)文的發(fā)送根據(jù)實(shí)際協(xié)議要求定制進(jìn)行發(fā)送。上述做法的優(yōu)點(diǎn)是設(shè)計(jì)的通信接口模擬器能夠很好的匹配實(shí)際應(yīng)用場景,能夠?qū)崿F(xiàn)與真實(shí)設(shè)備最接近的模擬測試環(huán)境,發(fā)送報(bào)文也能夠最大限度的與實(shí)際需求相符合,但是這種做法的主要缺點(diǎn)是只要有一個(gè)新的網(wǎng)絡(luò)應(yīng)用軟件出現(xiàn)就需要開發(fā)一個(gè)與之配套的網(wǎng)絡(luò)接口調(diào)試模擬器,無法實(shí)現(xiàn)軟件的重用,軟件的復(fù)用性很低,大大增加了軟件開發(fā)調(diào)試的時(shí)間成本和人力成本,與此同時(shí)網(wǎng)絡(luò)接口模擬器本身也需要調(diào)試,增加了開發(fā)調(diào)試的復(fù)雜性。

        針對一些簡單網(wǎng)絡(luò)應(yīng)用的調(diào)試,可以采用網(wǎng)絡(luò)抓包工具例如應(yīng)用最為廣泛的Wireshark軟件和EtherPeek NX軟件等,還有基于命令行的抓包工具例如tcpdump等,這種做法的優(yōu)勢是能夠?qū)?bào)文的正確性進(jìn)行驗(yàn)證而不需要定制網(wǎng)絡(luò)接口模擬器軟件,節(jié)省了模擬器軟件的開發(fā)成本,但是缺點(diǎn)也很明顯,缺點(diǎn)就是接收到的報(bào)文解析需要對照人工按照網(wǎng)絡(luò)通信接口協(xié)議拼接字節(jié)后依次進(jìn)行解析,很耗費(fèi)時(shí)間精力而且容易解析失誤,另外一個(gè)缺點(diǎn)就是無法實(shí)現(xiàn)網(wǎng)絡(luò)報(bào)文的發(fā)送,無法完全覆蓋網(wǎng)絡(luò)通信功能。目前還有一種網(wǎng)絡(luò)調(diào)試手段就是利用網(wǎng)絡(luò)調(diào)試助手軟件,網(wǎng)絡(luò)調(diào)試助手軟件集成了網(wǎng)絡(luò)報(bào)文抓取的基本功能,能夠抓取網(wǎng)絡(luò)報(bào)文序列,同時(shí)支持簡單的報(bào)文發(fā)送功能,該方法的主要缺點(diǎn)與網(wǎng)絡(luò)抓包軟件的方法類似,需要人工進(jìn)行字段的解析,比較復(fù)雜而且容易出錯(cuò)。

        針對上述三種常用的網(wǎng)絡(luò)接口通信調(diào)試方法的主要缺點(diǎn),本文提出了一種基于XML的通用接口通信調(diào)試系統(tǒng),利用XML技術(shù)進(jìn)行網(wǎng)絡(luò)接口通信協(xié)議的存儲(chǔ),實(shí)現(xiàn)不同協(xié)議只需要修改稍作修改即可以使用,不需要重新編寫接口模擬器軟件,重新運(yùn)行即可。接口通信調(diào)試系統(tǒng)按照功能主要軟件模塊包括接口通信協(xié)議存儲(chǔ)模塊、接口通信協(xié)議加載模塊、網(wǎng)絡(luò)數(shù)據(jù)報(bào)文捕獲模塊、界面顯示控制模塊、網(wǎng)絡(luò)數(shù)據(jù)報(bào)文發(fā)送模塊、網(wǎng)絡(luò)數(shù)據(jù)報(bào)文過濾解析模塊。本文針對接口通信調(diào)試系統(tǒng)的各個(gè)軟件模塊分別進(jìn)行了詳細(xì)設(shè)計(jì),并開展驗(yàn)證試驗(yàn)驗(yàn)證軟件的可行性,在文章最后給出了試驗(yàn)結(jié)果及結(jié)果分析。

        2 TCP/IP介紹

        近年來計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)得到了長足發(fā)展,移動(dòng)互聯(lián)網(wǎng)更是深刻影響現(xiàn)代人們的日常生活,互聯(lián)網(wǎng)由可聯(lián)網(wǎng)設(shè)備(包括計(jì)算機(jī)、移動(dòng)聯(lián)網(wǎng)設(shè)備等)、鏈路聯(lián)通設(shè)備(路由器、交換機(jī)和集線器)等結(jié)點(diǎn)連接的鏈路組成,網(wǎng)絡(luò)也可以通過路由器、交換機(jī)等網(wǎng)絡(luò)互聯(lián)設(shè)備與另外一個(gè)網(wǎng)絡(luò)向連接,形成更大的網(wǎng)絡(luò),所謂因特網(wǎng)就是全球所有網(wǎng)絡(luò)的連接形成的最大的互聯(lián)網(wǎng)。由于互聯(lián)網(wǎng)連接的設(shè)備是多樣的,可以是計(jì)算機(jī)、手機(jī)、智能設(shè)備等,與此同時(shí)各個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)的硬件環(huán)境和操作系統(tǒng)都存在巨大的差異性,因此如果沒有統(tǒng)一的網(wǎng)絡(luò)通信方式會(huì)導(dǎo)致網(wǎng)絡(luò)通信軟件編寫過于復(fù)雜而難于維護(hù),互聯(lián)網(wǎng)的標(biāo)準(zhǔn)化工作使得互聯(lián)網(wǎng)通信變得更容易,從而促進(jìn)了互聯(lián)網(wǎng)的蓬勃發(fā)展。

        所有的互聯(lián)網(wǎng)標(biāo)準(zhǔn)都是通過RFC的形式對公眾發(fā)布的,任何人都可以免費(fèi)下載?;ヂ?lián)網(wǎng)上的任意兩個(gè)通信設(shè)備被稱為兩個(gè)端(end),端與端之間的通信可以看作兩個(gè)主機(jī)的進(jìn)程之間的通信,在端系統(tǒng)中運(yùn)行的軟件之間網(wǎng)絡(luò)通信方式可以分為客戶端服務(wù)器模式(C/S架構(gòu))和對等模式(P2P架構(gòu)),客戶端服務(wù)器模式是應(yīng)用最為廣泛的網(wǎng)絡(luò)通信模式,如果瀏覽器作為客戶端就變成客戶端服務(wù)器模式的特殊形態(tài)瀏覽器服務(wù)器模式(B/S架構(gòu))。對等模式也得到了廣泛應(yīng)用,這種模式主要優(yōu)點(diǎn)是不需要中心服務(wù)器,被廣泛用于下載等類型應(yīng)用中。OSI將互聯(lián)網(wǎng)通信分為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層七個(gè)抽象層次,但作為事實(shí)上的互聯(lián)網(wǎng)通信標(biāo)準(zhǔn)TCP/IP協(xié)議將網(wǎng)絡(luò)分為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層五個(gè)層次。由于TCP/IP協(xié)議的實(shí)用性,成為全球應(yīng)用最為廣泛的網(wǎng)絡(luò)通信標(biāo)準(zhǔn)協(xié)議。TCP/IP協(xié)議簇顧名思義,包括傳輸控制協(xié)議(TCP協(xié)議)和網(wǎng)際協(xié)議(IP協(xié)議),不僅僅包括TCP協(xié)議和IP協(xié)議,還包括用戶數(shù)據(jù)報(bào)協(xié)議(UDP協(xié)議)、地址解析協(xié)議(ARP協(xié)議)、文件傳輸協(xié)議(FTP協(xié)議)、遠(yuǎn)程連接協(xié)議(Telnet協(xié)議)。TCP/IP協(xié)議簇最核心的協(xié)議是IP協(xié)議,IP協(xié)議是很多其他協(xié)議的基礎(chǔ),例如UDP和TCP協(xié)議就是IP協(xié)議前面添加了標(biāo)準(zhǔn)的報(bào)文頭。IP協(xié)議是一種無連接的網(wǎng)絡(luò)數(shù)據(jù)傳輸協(xié)議,提供盡力發(fā)送的不可靠傳輸方式,傳輸過程中出現(xiàn)校驗(yàn)錯(cuò)誤時(shí)采取的處理方法是直接丟棄錯(cuò)誤報(bào)文。IP協(xié)議頭部由20個(gè)字節(jié)組成,分別用來存儲(chǔ)IP協(xié)議的版本、數(shù)據(jù)總長度、源IP地址和端口號(hào)、目的IP地址和端口號(hào)、數(shù)據(jù)校驗(yàn)和等。UDP協(xié)議報(bào)文頭部包括8個(gè)字節(jié),是一種不可靠的傳輸層協(xié)議,如果需要可靠的數(shù)據(jù)傳輸,需要應(yīng)用TCP協(xié)議,TCP協(xié)議頭部包括20字節(jié)報(bào)文頭,TCP通過三次握手的方式保證了TCP報(bào)文的可靠傳輸,如果發(fā)送超時(shí)會(huì)自動(dòng)重復(fù)發(fā)送。TCP/IP協(xié)議的實(shí)現(xiàn)有很多版本,最著名的實(shí)現(xiàn)版本是由伯克利(Berkeley)的加利福尼亞大學(xué)計(jì)算機(jī)系統(tǒng)研究組提供的實(shí)現(xiàn),伯克利的TCP/IP協(xié)議棧是在Unix操作系統(tǒng)實(shí)現(xiàn)的,很多非Unix或者類Unix操作系統(tǒng)都是基于伯克利實(shí)現(xiàn)的TCP/IP協(xié)議棧開展的。伯克利實(shí)現(xiàn)的協(xié)議棧利用套接字(socket)進(jìn)行編程,提供一套用戶接口完成網(wǎng)絡(luò)通信的功能,很多非Unix系統(tǒng)完成了伯克利套接字的移植工作,使得套接字應(yīng)用接口成為網(wǎng)絡(luò)編程的通用用戶接口。

        套接字的類型包括TCP類型、UDP類型和原始套接字(Raw Socket)類型,在創(chuàng)建時(shí)候指定。使用接口函數(shù)socket創(chuàng)建套接字,對于C/S架構(gòu)軟件服務(wù)器端需要綁定IP地址和端口號(hào)首先啟動(dòng)進(jìn)程在綁定IP和端口號(hào)等待客戶端網(wǎng)絡(luò)數(shù)據(jù),客戶端向指定的IP地址和端口號(hào),對于套接字被指定為原始套接字類型的套接字能夠接收所有經(jīng)過網(wǎng)卡的IP數(shù)據(jù)包,常常被用于網(wǎng)絡(luò)報(bào)文抓取。

        3 XML簡介

        XML的全名是可擴(kuò)展標(biāo)簽語言(Extensible Markup Language),XML是標(biāo)準(zhǔn)通用標(biāo)記語言的一個(gè)子集,是一種與HTML類似的純文本標(biāo)記語言,XML利用結(jié)構(gòu)性的標(biāo)簽屬性和屬性數(shù)值來表達(dá)數(shù)據(jù)物理含義。HTML語言也是標(biāo)記語言,XML和HTML主要區(qū)別是擴(kuò)展性、結(jié)構(gòu)性、校驗(yàn)性,在擴(kuò)展性方面HTML標(biāo)簽屬性是固定的不可修改的,但XML能夠根據(jù)需要表示數(shù)據(jù)的含義自定義添加標(biāo)簽屬性,大大豐富了數(shù)據(jù)表達(dá)的能力;在結(jié)構(gòu)性方面HTML無法實(shí)現(xiàn)復(fù)雜結(jié)構(gòu),而XML的標(biāo)簽結(jié)構(gòu)支持復(fù)雜的嵌套,能夠清晰的反應(yīng)要表達(dá)數(shù)據(jù)的層級(jí)關(guān)系;在校驗(yàn)?zāi)芰Ψ矫鍴TML使用語言文法做文件結(jié)構(gòu)的校驗(yàn),但是沒有相應(yīng)的標(biāo)準(zhǔn)化校驗(yàn)文件對其進(jìn)行約束,XML有很多標(biāo)準(zhǔn)文件規(guī)定XML的正確性校驗(yàn),從而保證了XML的校驗(yàn)?zāi)芰?。XML編寫方法是創(chuàng)建后綴為“xml”的純文本文件,根據(jù)實(shí)際情況創(chuàng)建標(biāo)簽,組成元素包括標(biāo)簽的版本描述、起止標(biāo)記、標(biāo)記的字符數(shù)據(jù)部分、標(biāo)簽注釋、文檔類型聲明(DTD,Document Type Definition)等。由于XML具有容易理解、便于維護(hù)修改、支持復(fù)雜層次結(jié)構(gòu)、純文本編寫方式具有系統(tǒng)無關(guān)的跨平臺(tái)性,因此XML被廣泛應(yīng)用于配置文件的編寫,使用XML配置的軟件不需要進(jìn)行重新編譯,修改配置后只需要軟件重新啟動(dòng)即可,具有很好的封裝性。

        XML文件包括文檔對象模型(Document Object Model)解析方式、簡易APIXML(simple API for XML)解析方式、DOM4J解析方式、Java文檔對象模型(Java Document Object Model)解析方式。對于XML文件的讀取和處理可以采取自己寫代碼打開文件,讀取所有XML行數(shù)據(jù),然后根據(jù)XML標(biāo)簽成對規(guī)則,逐個(gè)標(biāo)簽進(jìn)行解析,比較復(fù)雜而容易出錯(cuò),因此現(xiàn)在有很多軟件庫,提供簡單方便的應(yīng)用程序接口,通過接口的調(diào)用就可以很方便快捷的解析XML文件信息,Java、C++、PHP等各種主流編程語言都有很多優(yōu)秀的XML解析庫可用。Qt是全球應(yīng)用最為廣泛的C++界面開發(fā)庫之一,設(shè)計(jì)為一款跨平臺(tái)的GUI開發(fā)庫,目前已經(jīng)發(fā)展成為一個(gè)集界面開發(fā)、支持多進(jìn)程/線程技術(shù)、支持?jǐn)?shù)據(jù)庫接口、網(wǎng)絡(luò)通信處理、文件IO操作等功能的完備C++函數(shù)庫。Qt對XML提供了一個(gè)Qt類庫QDomDocument,可以調(diào)用QDomDocument類的接口進(jìn)行XML文件的讀取解析和寫入工作。

        4 接口通信調(diào)試系統(tǒng)總體設(shè)計(jì)

        接口通信調(diào)試系統(tǒng)主要功能是完成網(wǎng)絡(luò)應(yīng)用程序的接口通信調(diào)試,首先需要完成通過網(wǎng)卡數(shù)據(jù)的截取,然后根據(jù)設(shè)置好的過濾條件完成報(bào)文的過濾并存儲(chǔ)到內(nèi)存中,然后根據(jù)接口通信協(xié)議內(nèi)容進(jìn)行報(bào)文的解析和顯示,支持通過界面方式進(jìn)行接口協(xié)議的定義、過濾條件的定義,支持通過界面進(jìn)行數(shù)據(jù)報(bào)文的發(fā)送功能。按照功能接口通信調(diào)試系統(tǒng)可以分為以下幾個(gè)軟件功能模塊:網(wǎng)絡(luò)接收軟件模塊、網(wǎng)絡(luò)數(shù)據(jù)過濾軟件模塊、網(wǎng)絡(luò)數(shù)據(jù)處理軟件模塊、界面顯示軟件模塊、協(xié)議定義軟件模塊、網(wǎng)絡(luò)數(shù)據(jù)發(fā)送軟件模塊。下面針對這幾個(gè)軟件模塊開展詳細(xì)設(shè)計(jì)。

        4.1 網(wǎng)絡(luò)接收模塊設(shè)計(jì)

        網(wǎng)絡(luò)接收模塊主要功能是接收所有經(jīng)過網(wǎng)卡的數(shù)據(jù),采用的技術(shù)是原始套接字的方式。首先利用socket()函數(shù)創(chuàng)建類型為RawSocket的原始套接字,然后創(chuàng)建網(wǎng)絡(luò)接收線程,以死循環(huán)方式在網(wǎng)絡(luò)接收線程中調(diào)用recvfrom()函數(shù)阻塞式接收網(wǎng)絡(luò)數(shù)據(jù),接收到的數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)接收緩存中,作為參數(shù)傳遞給網(wǎng)絡(luò)數(shù)據(jù)過濾模塊,等待數(shù)據(jù)過濾和處理。

        4.2 網(wǎng)絡(luò)數(shù)據(jù)過濾模塊設(shè)計(jì)

        網(wǎng)絡(luò)數(shù)據(jù)過濾模塊主要功能是讀取和寫入過濾條件到配置文件,負(fù)責(zé)軟件過濾條件的寫入存儲(chǔ)和讀取加載工作。實(shí)現(xiàn)技術(shù)主要采用XML作為配置文件,軟件啟動(dòng)時(shí)可以利用界面的方式對XML配置文件進(jìn)行寫入和加載。過濾條件包括:源IP地址、源端口號(hào)。過濾條件的存儲(chǔ)利用的是XML文件存儲(chǔ),XML的過濾條件的標(biāo)簽名稱源IP地址標(biāo)簽SRC_IP,端口號(hào)標(biāo)簽名稱SRC_PORT。過濾條件XML的存儲(chǔ)可以直接修改配置文件的SRC_IP和SRC_PORT標(biāo)簽字段的值,值以字符串的方式存儲(chǔ),軟件重啟后生效,另外一種方式是軟件啟動(dòng)后通過界面方式修改過濾條件,界面?zhèn)魅氪薷牡脑碔P地址和源端口號(hào),確定修改后,利用Qt自帶的XML寫入接口函數(shù)將修改字段寫入到SRC_IP和SRC_PORT標(biāo)簽對應(yīng)位置,完成過濾條件的XML文件存盤工作。

        4.3 通信協(xié)議定義軟件模塊

        通信協(xié)議定義模塊主要功能是完成通信接口協(xié)議的定義寫入到接口協(xié)議XML配置文件,支持直接修改接口協(xié)議配置文件,也支持通過界面以可視化的方式新增或者修改通信協(xié)議條目。

        通信協(xié)議XML標(biāo)簽結(jié)構(gòu)包括協(xié)議名稱字段標(biāo)簽名稱PROTOCOL_NAME用于標(biāo)志協(xié)議的名稱(取值為中文字符串,用于界面顯示協(xié)議名稱),協(xié)議名稱包括屬性為PROTOCOL_INDEX用來標(biāo)識(shí)協(xié)議唯一標(biāo)志(取值從0開始,后面如有新的協(xié)議字段該屬性值自動(dòng)加一),協(xié)議名稱的第二個(gè)屬性為PROTOCOL_KEYOFFSET用來表示協(xié)議每一個(gè)數(shù)據(jù)報(bào)文的唯一數(shù)據(jù)標(biāo)志的相對于首個(gè)字節(jié)的偏移量,協(xié)議名稱的第三個(gè)屬性是PROTOCOL_KEYLEN用于表示數(shù)據(jù)報(bào)文唯一數(shù)據(jù)標(biāo)志的數(shù)據(jù)長度;協(xié)議的下一級(jí)包括協(xié)議條目字段標(biāo)簽名稱為PROITEM用來定義報(bào)文的任意字段,協(xié)議條目字段包括屬性PROITEM_INDEX用來標(biāo)識(shí)各個(gè)條目的索引號(hào)(取值從0開始,后面的條目字段數(shù)值加一),PROITEM_NAME屬性用來標(biāo)識(shí)字段的名稱(取值為字符串,用于界面顯示使用),PROITEM_KEY屬性用來標(biāo)識(shí)該字段是否是協(xié)議條目是否為報(bào)文唯一標(biāo)志號(hào)(屬性字段如果為true代表該字段為協(xié)議唯一標(biāo)識(shí)字段,屬性值為false代表該字段為普通字段),PROITEM_TYPE屬性用來標(biāo)識(shí)字段的數(shù)據(jù)類型,協(xié)議字段類型包括有符號(hào)字符類型(1個(gè)字節(jié)長度)、有符號(hào)短整數(shù)型(2個(gè)字節(jié)長度)、有符號(hào)整數(shù)型(4個(gè)字節(jié)長度)、有符號(hào)長整數(shù)型(8個(gè)字節(jié)長度)、單精度浮點(diǎn)型(4個(gè)字節(jié)長度)、雙精度浮點(diǎn)型(8個(gè)字節(jié)長度)、無符號(hào)字符類型(1個(gè)字節(jié)長度)、無符號(hào)短整數(shù)型(2個(gè)字節(jié)長度)、無符號(hào)整數(shù)型(4個(gè)字節(jié)長度)、無符號(hào)長整數(shù)型(8個(gè)字節(jié)長度),分別利用類型屬性值char、short、int、long、float、double、uchar、ushort、uint、ulong來表示。通信協(xié)議XML文件的寫入可采取人工直接編輯通信協(xié)議XML文件來完成,編輯時(shí)候需要注意協(xié)議條目字段的索引字段要手動(dòng)加一,防止與前面索引字段取值重復(fù),標(biāo)簽也需要仔細(xì)核對,有一定的難度和復(fù)雜性,因此推薦的方式是利用圖形界面的協(xié)議設(shè)置窗口完成協(xié)議的新增修改或者刪除操作。網(wǎng)絡(luò)調(diào)試系統(tǒng)軟件啟動(dòng)后會(huì)自動(dòng)到指定路徑打開并讀取通信協(xié)議XML文件,如果文件不存在會(huì)創(chuàng)建一個(gè)空的通信協(xié)議XML配置文件。讀取通信協(xié)議XML文件后,利用Qt的XML文件解析類進(jìn)行XML文件的讀取和解析,將XML的所有標(biāo)簽讀取到內(nèi)存中建立協(xié)議解析,首先將協(xié)議條目的唯一標(biāo)志的偏移量和數(shù)據(jù)長度存儲(chǔ)到局部變量中,然后建立協(xié)議條目數(shù)據(jù)結(jié)構(gòu)表。協(xié)議條目結(jié)構(gòu)體字段包括字符串型條目名稱(itemName)、布爾型條目標(biāo)識(shí)符號(hào)(bKeyitem)、整數(shù)型條目長度(itemLen)、QString類型條目顯示數(shù)值(itemValue)。通信協(xié)議XML文件讀取進(jìn)來后,建立一個(gè)協(xié)議條目標(biāo)識(shí)數(shù)值和協(xié)議條目結(jié)構(gòu)體鏈表為序列對的QMap數(shù)據(jù)結(jié)構(gòu)作為協(xié)議解析列表。后續(xù)的網(wǎng)絡(luò)報(bào)文處理模塊根據(jù)建立好的協(xié)議解析列表進(jìn)行報(bào)文的解析和顯示。

        4.4 網(wǎng)絡(luò)數(shù)據(jù)處理軟件模塊

        網(wǎng)絡(luò)數(shù)據(jù)處理模塊的功能是根據(jù)網(wǎng)絡(luò)通信協(xié)議字段的定義對接收到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行處理,處理后的結(jié)果作為界面顯示的輸入,完成協(xié)議字段的現(xiàn)實(shí)功能。首先根據(jù)協(xié)議條目的唯一標(biāo)志的數(shù)據(jù)偏移量和數(shù)據(jù)長度解析出當(dāng)前數(shù)據(jù)報(bào)文的報(bào)文標(biāo)志,然后在建立好的網(wǎng)絡(luò)通信協(xié)議結(jié)構(gòu)表中查詢是否存在該標(biāo)志的協(xié)議條目,如果查詢不到則忽略改條報(bào)文,如果查詢成功,則獲取對應(yīng)數(shù)據(jù)標(biāo)志的協(xié)議條目結(jié)構(gòu),將數(shù)據(jù)報(bào)文的對應(yīng)到結(jié)構(gòu)體鏈表的每一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)的數(shù)值根據(jù)節(jié)點(diǎn)結(jié)構(gòu)體的字節(jié)數(shù)目進(jìn)行字節(jié)拼接得到,解析后的數(shù)據(jù)發(fā)送信號(hào)到界面線程用于驅(qū)動(dòng)界面顯示。

        4.5 界面顯示及操作控制軟件模塊

        界面顯示及操作控制模塊主要功能是顯示接收到網(wǎng)絡(luò)數(shù)據(jù)信息,顯示報(bào)文的標(biāo)志以及各個(gè)數(shù)據(jù)段的數(shù)值,同時(shí)可以通過界面設(shè)置通信協(xié)議、設(shè)置過濾條件,輸入發(fā)送數(shù)據(jù)配合完成向目標(biāo)IP地址和端口號(hào)發(fā)送網(wǎng)絡(luò)數(shù)據(jù)任務(wù)。界面顯示基于Qt框架進(jìn)行開發(fā),基類選擇QMainWindow類,因?yàn)樽詭Р藛伪容^適合網(wǎng)絡(luò)調(diào)試軟件的需求,網(wǎng)絡(luò)數(shù)據(jù)顯示部分選擇控件QTableWidget,以分行顯示的方式顯示所有的符合條件網(wǎng)絡(luò)報(bào)文(類似抓包軟件一樣),如果希望看到網(wǎng)絡(luò)報(bào)文的詳細(xì)信息,只需要用鼠標(biāo)在需要查看的條目用鼠標(biāo)雙擊操作,就可以彈出詳細(xì)的字段信息,顯示內(nèi)容是改條網(wǎng)絡(luò)數(shù)據(jù)報(bào)文對應(yīng)通信協(xié)議解析后的每一個(gè)字段的顯示,每一個(gè)顯示字段分為兩個(gè)部分,第一部分是字段本身的名稱(選用QLabel控件),第二部分是字段在本條數(shù)據(jù)報(bào)文的數(shù)值(選用QLabel控件)。協(xié)議設(shè)置界面是在菜單里面選擇協(xié)議設(shè)置,彈出協(xié)議設(shè)置界面,界面主要包括協(xié)議名稱、協(xié)議條目唯一標(biāo)志偏移量、協(xié)議唯一標(biāo)志數(shù)據(jù)長度。軟件啟動(dòng)后自動(dòng)讀取協(xié)議配置XML文件,利用通信協(xié)議定義軟件模塊建立網(wǎng)絡(luò)協(xié)議結(jié)構(gòu)表,界面顯示模塊完成網(wǎng)絡(luò)協(xié)議的樹形結(jié)構(gòu)的顯示任務(wù),顯示在界面的左側(cè),應(yīng)用Qt自帶的樹形結(jié)構(gòu)控件QTreeWidget完成協(xié)議樹形結(jié)構(gòu)的顯示,顯示層級(jí)包括頂級(jí)節(jié)點(diǎn)協(xié)議名稱,展開后下一級(jí)是每一個(gè)報(bào)文結(jié)構(gòu)名稱,報(bào)文結(jié)構(gòu)的下一級(jí)是改條報(bào)文的所有協(xié)議字段。界面顯示控制模塊支持通過鼠標(biāo)右鍵菜單的方式對協(xié)議條目和報(bào)文任意字段的增加、刪除、修改等工作,增、刪、改的結(jié)果會(huì)自動(dòng)寫入通信協(xié)議XML配置文件中,下次軟件啟動(dòng)后自動(dòng)同步更新。界面中網(wǎng)絡(luò)發(fā)送控制區(qū)域主要完成待發(fā)送網(wǎng)絡(luò)數(shù)據(jù)的輸入,輸入目標(biāo)IP地址和目標(biāo)端口號(hào)、發(fā)送按鈕,同時(shí)支持讀取編輯好的發(fā)送文件,將文件內(nèi)容發(fā)送到目標(biāo)IP地址和目標(biāo)端口。

        4.6 網(wǎng)絡(luò)數(shù)據(jù)發(fā)送軟件模塊

        網(wǎng)絡(luò)數(shù)據(jù)發(fā)送模塊主要功能是讀取界面中網(wǎng)絡(luò)發(fā)送控制區(qū)域的輸入數(shù)據(jù),利用套接字向界面中指定的IP地址和端口號(hào)發(fā)送界面中讀取的待發(fā)送網(wǎng)絡(luò)數(shù)據(jù)或者加載的發(fā)送文件內(nèi)容。首先利用socket()函數(shù)創(chuàng)建類型為RawSocket的原始套接字,然后創(chuàng)建網(wǎng)絡(luò)發(fā)送線程,以死循環(huán)方式在阻塞式等待在網(wǎng)絡(luò)發(fā)送消息隊(duì)列中,如果隊(duì)列有數(shù)據(jù),則取隊(duì)列首部元素,并調(diào)用sendto()函數(shù)向指定的IP地址和端口號(hào)發(fā)送隊(duì)列中的數(shù)據(jù),直至隊(duì)列數(shù)據(jù)為空。當(dāng)界面網(wǎng)絡(luò)發(fā)送區(qū)域用戶設(shè)置好目標(biāo)IP地址和端口號(hào),輸入完待發(fā)送網(wǎng)絡(luò)數(shù)據(jù)或者加載好待發(fā)送文件后,鼠標(biāo)點(diǎn)擊發(fā)送數(shù)據(jù)按鈕,就會(huì)將待發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)加入到網(wǎng)絡(luò)發(fā)送數(shù)據(jù)消息隊(duì)列中,從而驅(qū)動(dòng)網(wǎng)絡(luò)發(fā)送線程完成網(wǎng)絡(luò)數(shù)據(jù)發(fā)送任務(wù)。

        5 試驗(yàn)環(huán)境搭建和試驗(yàn)結(jié)果展示

        根據(jù)本文章節(jié)4給出的網(wǎng)絡(luò)調(diào)試系統(tǒng)的總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)可以完成網(wǎng)絡(luò)調(diào)試系統(tǒng)軟件的編寫,需要設(shè)計(jì)試驗(yàn)對軟件的可用性和正確性進(jìn)行驗(yàn)證。本文提出的網(wǎng)絡(luò)調(diào)試系統(tǒng)方法是一種通用的、跨平臺(tái)的方法,應(yīng)用Qt和C++進(jìn)行開發(fā),操作系統(tǒng)支持Windows操作系統(tǒng)、Linux操作系統(tǒng)、VxWorks操作系統(tǒng)等。不失一般性的本文試驗(yàn)環(huán)境選用Windows7操作系統(tǒng)進(jìn)行演示,首先安裝VS2010(Microsoft Visual Studio 2010)軟件,然后到Qt官方下載網(wǎng)站下載Qt5.0版本的x86軟件安裝包可執(zhí)行文件,并在Win7下進(jìn)行Qt5的安裝,為了將Qt集成到VS2010上,需要下載安裝Qt的VS2010插件,該插件也可以在Qt官方網(wǎng)站下載獲得,安裝好插件后,打開VS2010就可以在菜單欄出現(xiàn)Qt標(biāo)志,表明插件安裝成功。為了驗(yàn)證調(diào)試軟件的功能,定義一個(gè)協(xié)議名稱為“接口協(xié)議1”,包括協(xié)議條目1(接收)、協(xié)議條目2(接收)、協(xié)議條目3(接收)、協(xié)議條目4(接收)、協(xié)議條目5(發(fā)送),協(xié)議條目1-4包括字段1(無符號(hào)整數(shù)型)、字段2(有符號(hào)整數(shù)型)、字段3(無符號(hào)長整數(shù)型)、字段4(單精度浮點(diǎn)數(shù))、字段5(雙精度浮點(diǎn)數(shù)),協(xié)議條目5包括字段1(單精度浮點(diǎn)數(shù))、字段2(雙精度浮點(diǎn)數(shù))、字段3(有符號(hào)整數(shù)型)。按照上述測試協(xié)議編寫網(wǎng)絡(luò)模擬器(綁定本地IP地址為192.9.30.66,端口號(hào)9856)發(fā)送UDP報(bào)文到目標(biāo)機(jī),目標(biāo)機(jī)捕獲報(bào)文后解析結(jié)構(gòu)截圖如圖1所示。

        圖1:試驗(yàn)結(jié)果顯示截圖

        6 試驗(yàn)結(jié)果分析

        試驗(yàn)結(jié)果表明本文提出的網(wǎng)絡(luò)調(diào)試系統(tǒng)能夠?qū)崿F(xiàn)通用的網(wǎng)絡(luò)數(shù)據(jù)的接收、解析以及顯示功能,不僅能夠在網(wǎng)絡(luò)數(shù)據(jù)接收區(qū)域顯示所有接收到的報(bào)文條目,也可以通過點(diǎn)擊某一條關(guān)注的報(bào)文標(biāo)志報(bào)文查看報(bào)文的各個(gè)字段數(shù)據(jù)信息,在右側(cè)的報(bào)文字段顯示區(qū)域顯示,同時(shí)支持網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送功能和協(xié)議的配置等功能。本文提出的網(wǎng)絡(luò)調(diào)試系統(tǒng)具有協(xié)議低耦合度,可以根據(jù)實(shí)際情況設(shè)置協(xié)議配置文件,重啟軟件就可以實(shí)現(xiàn)一個(gè)符合新協(xié)議定義的接口調(diào)試軟件,具有很高的軟件復(fù)用性,使網(wǎng)絡(luò)接口調(diào)試工作變得更簡單便捷,具備很高的實(shí)用價(jià)值。

        猜你喜歡
        通信協(xié)議字段報(bào)文
        基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
        汽車電器(2022年9期)2022-11-07 02:16:24
        圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
        CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
        淺析反駁類報(bào)文要點(diǎn)
        中國外匯(2019年11期)2019-08-27 02:06:30
        基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設(shè)計(jì)
        ATS與列車通信報(bào)文分析
        基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設(shè)計(jì)與研究
        基于NS-3的PLC多頻通信協(xié)議仿真平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
        電測與儀表(2016年2期)2016-04-12 00:24:52
        CNMARC304字段和314字段責(zé)任附注方式解析
        無正題名文獻(xiàn)著錄方法評(píng)述
        国产禁区一区二区三区| 国产精品系列亚洲第一| 亚洲乱码中文字幕综合69堂| 国产一区二区黄色的网站| 亚洲一区自拍高清亚洲精品| 国产成人www免费人成看片| 91网红福利精品区一区二| 亚洲日产乱码在线中文字幕| 成品人视频ww入口| 大地资源在线播放观看mv| 久久久久久久尹人综合网亚洲 | 91老司机精品视频| 久久九九av久精品日产一区免费 | 精品少妇一区一区三区| 亚洲一区二区三区18| 久久精品夜色噜噜亚洲a∨| 亚洲av综合色区无码一二三区| 中文字幕一区二区三区人妻精品| 在线观看av不卡 一区二区三区| 99久久精品免费看国产一区二区三区| 亚洲高潮喷水无码av电影| 国产在线视频h| 你懂的视频网站亚洲视频| 国产电影一区二区三区| 香蕉久久夜色精品国产2020| 亚洲中文字幕在线第二页| 文字幕精品一区二区三区老狼| 日本人与黑人做爰视频网站| 中文字幕乱码亚洲无线精品一区| 国产精品女同一区二区免| 久久久中日ab精品综合| 人与嘼av免费| 成人影院免费视频观看| 国产福利一区二区三区在线视频| 欧美人与动牲猛交xxxxbbbb| 91精品综合久久久久m3u8| 亚洲乱妇熟女爽到高潮视频高清| 久久精品中文字幕大胸| 亚洲国产麻豆综合一区| 97女厕偷拍一区二区三区 | 97人妻碰碰视频免费上线|