任育琦 劉瑩 李文杰
【摘 要】文章設(shè)計一種無線通信信令收發(fā)模擬軟件,采用TCP網(wǎng)絡(luò)數(shù)據(jù)傳輸形式來模擬無線數(shù)據(jù)傳輸中信令的收發(fā)。該軟件采用客戶端/服務(wù)器模式,以手機(jī)為客戶端,以基站為服務(wù)器端?;赟ocket通信編程,實現(xiàn)信令的發(fā)送和接收、信令的解析和處理。多個手機(jī)可以同時與一個基站進(jìn)行數(shù)據(jù)交互,而基站同時也能監(jiān)聽和處理多個手機(jī)發(fā)送的請求。整個軟件用C++語言加以實現(xiàn),并測試通信,運(yùn)行良好。
【關(guān)鍵詞】無線通信信令;客戶端/服務(wù)器;Socket通信
【中圖分類號】TN914 【文獻(xiàn)標(biāo)識碼】A 【文章編號】1674-0688(2017)09-0034-03
0 引言
隨著無線通信行業(yè)的迅速發(fā)展,通信產(chǎn)業(yè)鏈日漸成熟,無線通信技術(shù)深刻地影響著人們的生活。在無線通信網(wǎng)中,除了傳輸相關(guān)業(yè)務(wù)信息外,還在通信設(shè)備之間傳輸用來保證正常通信所產(chǎn)生的控制信號,而信令網(wǎng)就是傳輸這些控制信號的網(wǎng)絡(luò),而用來控制語音或數(shù)據(jù)傳輸?shù)南⒎Q為信令。信令可看做是一個通信網(wǎng)絡(luò)的控制系統(tǒng),不同于用戶信息,用戶信息是通過通信網(wǎng)絡(luò)由發(fā)送者傳給接收者,而信令通常需要在通信網(wǎng)絡(luò)的基站、移動臺和移動控制交換中心之間傳輸,以及進(jìn)行分析處理并經(jīng)交互作用而形成一系列的操作和控制,其作用是保證用戶信息的有效且可靠的傳輸。
本文設(shè)計了一種無線通信信令收發(fā)的模擬軟件,用來模擬無線數(shù)據(jù)傳輸中信令的收發(fā)、解碼分析、處理及糾錯。
1 Socket通信
Socket接口是TCP/IP網(wǎng)絡(luò)中一個通用的API,也是在互聯(lián)網(wǎng)上進(jìn)行應(yīng)用開發(fā)最為普遍的的API。Socket在計算機(jī)中提供了一個通信端口,可以與任何一個具有Socket端口的計算機(jī)進(jìn)行通信。應(yīng)用程序在網(wǎng)絡(luò)上傳輸、接收的信息都通過這個Socket接口來完成,通過調(diào)用系統(tǒng)提供的Socket庫函數(shù)實現(xiàn)網(wǎng)絡(luò)中計算機(jī)的相互通信。在應(yīng)用開發(fā)中就像使用文件句柄一樣,可以對Socket句柄進(jìn)行讀、寫操作。通信機(jī)制采用客戶端/服務(wù)器模式,所謂客戶端和服務(wù)器,就是2個相應(yīng)的應(yīng)用程序,即客戶端程序發(fā)送請求給服務(wù)器,服務(wù)器對請求作出應(yīng)答,并產(chǎn)生結(jié)果。
2 模擬軟件設(shè)計
2.1 總體設(shè)計
客戶端/服務(wù)器公共模塊包括顯示模塊、通信模塊、子模塊和狀態(tài)模塊四大部分。其中,顯示模塊主要顯示并處理用戶信息和提供定時器。通信模塊主要實現(xiàn)服務(wù)器/客戶端處理數(shù)據(jù)的接收和發(fā)送。子模塊對應(yīng)著一個客戶端(手機(jī)),主要協(xié)調(diào)數(shù)據(jù)流在通信模塊和狀態(tài)的傳輸,以及狀態(tài)的變遷管理和狀態(tài)模塊的切換。狀態(tài)模塊主要用于各個信令的校驗,以及信令的產(chǎn)生。
本文設(shè)計的軟件采用C/S架構(gòu),應(yīng)用C++程序語言,采用對話框模式,以手機(jī)為客戶端,基站為服務(wù)器。該軟件用于實現(xiàn)信令的發(fā)送和接收、信令解析處理及在信令收發(fā)傳輸中發(fā)生幾種狀態(tài)的遷移,其中手機(jī)和基站以收到信令為狀態(tài)遷移的觸發(fā)條件。多個手機(jī)可以同時與一個基站進(jìn)行信息交互,同時基站也能監(jiān)聽和處理多個手機(jī)的請求,但基站的存儲設(shè)置較小,所以只能處理的手機(jī)個數(shù)有限制。TCP/IP網(wǎng)絡(luò)數(shù)據(jù)傳輸采用Windows Socket實現(xiàn),Socket采用TCP數(shù)據(jù)流方式,雖然TCP/IP是面向連接的數(shù)據(jù)傳輸方式,但也需要在應(yīng)用層確保數(shù)據(jù)的可靠到達(dá),增加超時重發(fā)機(jī)制,且重發(fā)次數(shù)有限并可配置。
2.2 服務(wù)器端設(shè)計
服務(wù)器端設(shè)計采用分層結(jié)構(gòu),分為4個層:即通信層、數(shù)據(jù)處理層、消息緩沖層和顯示層。其中,通信層主要負(fù)責(zé)數(shù)據(jù)的收發(fā),通信層由通信模塊構(gòu)成。數(shù)據(jù)處理層主要用于解析信令、生成信令數(shù)據(jù)等與業(yè)務(wù)相關(guān)的數(shù)據(jù)處理,由管理模塊、子模塊和狀態(tài)模塊構(gòu)成。消息緩沖層主要儲存消息隊列,緩存通信模塊接收的數(shù)據(jù)端消息。顯示層主要用于界面數(shù)據(jù)的實現(xiàn)和用戶操作,由對話框類構(gòu)成。服務(wù)器端的層次結(jié)構(gòu)如圖1所示。
如圖1所示,通信模塊將接收到的網(wǎng)絡(luò)數(shù)據(jù)通過數(shù)據(jù)流傳遞給數(shù)據(jù)處理層進(jìn)行處理,并發(fā)送消息隊列經(jīng)消息緩沖層到顯示層處理。數(shù)據(jù)處理層將產(chǎn)生的信令數(shù)據(jù)傳遞給通信層,并通過消息機(jī)制將要發(fā)送給客戶端的數(shù)據(jù)發(fā)送給顯示層處理。
通信層的通信模塊采用多線程設(shè)計,其中一個線程用于端口監(jiān)聽,當(dāng)端口有客戶端連接,則開啟一個獨(dú)立的線程接收這個客戶端Socket數(shù)據(jù)。開啟的接收數(shù)據(jù)線程數(shù)是可定義的,如果超過最大連接數(shù),則不再開啟數(shù)據(jù)接收線程。接收客戶端Socket數(shù)據(jù)的線程將接收到的數(shù)據(jù)存入消息緩存層。數(shù)據(jù)處理層的管理模塊開啟多個處理數(shù)據(jù)消息線程,并進(jìn)行在讀取消息線程里面調(diào)用客戶端Socket對應(yīng)的角色進(jìn)行處理。子模塊根據(jù)所需的信令數(shù)據(jù)調(diào)用狀態(tài)模塊進(jìn)行信令的校驗和產(chǎn)生,維護(hù)著對應(yīng)客戶端的狀態(tài)信息,并根據(jù)接收到不同的信令進(jìn)行狀態(tài)的切換。狀態(tài)模塊通過調(diào)用通信模塊的數(shù)據(jù)發(fā)送函數(shù)將信令數(shù)據(jù)發(fā)送給客戶端。顯示層主要接收消息,將接收到的消息進(jìn)行顯示,主要顯示信令I(lǐng)D、信令流向和碼流,并對錯誤信息進(jìn)行突出顯示。具體數(shù)據(jù)流向如圖2所示。
2.3 客戶端設(shè)計
客戶端的設(shè)計架構(gòu)和服務(wù)器大體一致,采用4層設(shè)計,分別為通信層、數(shù)據(jù)處理層、消息緩沖層和顯示層。其中,通信層包括通信模塊,主要實現(xiàn)異步I/O數(shù)據(jù)接收和發(fā)送。數(shù)據(jù)處理層包括子模塊和狀態(tài)模塊,用于解析信令,生成信令數(shù)據(jù)等數(shù)據(jù)處理。顯示層主要用于界面顯示和用戶操作,由對話框類構(gòu)成??蛻舳说膶哟谓Y(jié)構(gòu)如圖3所示。
由于客戶端采用異步I/O模式,當(dāng)網(wǎng)絡(luò)有數(shù)據(jù)接收時,會觸發(fā)窗口的網(wǎng)絡(luò)消息,通過顯示層的對話框調(diào)用通信模塊的接收數(shù)據(jù)函數(shù),并將數(shù)據(jù)轉(zhuǎn)發(fā)給數(shù)據(jù)處理層進(jìn)行數(shù)據(jù)處理。數(shù)據(jù)處理層只包含一個子模塊,通過狀態(tài)模塊實現(xiàn)相應(yīng)的信令數(shù)據(jù)校驗和信令產(chǎn)生,由子模塊調(diào)用通信層的發(fā)送函數(shù)將數(shù)據(jù)發(fā)送給服務(wù)器。具體數(shù)據(jù)處理流程如圖4所示。
3 測試結(jié)果
服務(wù)器和客戶端程序的運(yùn)行效果圖如圖5所示。
手機(jī)撥號,向基站發(fā)送請求建立消息,處于空閑狀態(tài)的基站收到請求,向手機(jī)回提示消息。同時,基站接通鏈路,向手機(jī)發(fā)送連接狀態(tài)消息。手機(jī)向基站回復(fù)應(yīng)答,進(jìn)入通話階段。
當(dāng)通話結(jié)束,基站立即釋放鏈路,向手機(jī)發(fā)送斷開狀態(tài)消息。手機(jī)釋放鏈路,向基站回釋放消息,整個通話結(jié)束。對于基站,其正常流程是手機(jī)發(fā)送完釋放消息后關(guān)閉手機(jī)。消息為灰色表示連接斷開,如果是紅色,則是收到非預(yù)期消息,重新發(fā)送。如果出現(xiàn)超時狀態(tài)回滾,則超時消息重發(fā)。
4 結(jié)論
本文以Socket技術(shù)為載體,設(shè)計一種無線通信信令收發(fā)模擬軟件,實現(xiàn)無線數(shù)據(jù)傳輸中信令的收發(fā)。通過實際應(yīng)用和測試,能夠達(dá)到預(yù)期的目標(biāo),通信時每條信令都可以在界面上顯示ID、方向和碼流,所有信令都能可靠無誤地到達(dá)對方,任何一方發(fā)送的信令丟失后都有重發(fā)機(jī)制。通過模擬軟件的開發(fā),體現(xiàn)了Socket在網(wǎng)絡(luò)編程方面的巨大作用,實現(xiàn)了網(wǎng)絡(luò)編程的易實現(xiàn)性和可靠性。
參 考 文 獻(xiàn)
[1]劉光.嵌入式無線通信系統(tǒng)設(shè)計[D].西安:西安電子科技大學(xué),2010(6).
[2]朱輝生.VC中基于SOCKET的網(wǎng)絡(luò)編程[J].計算機(jī)應(yīng)用與軟件,2004,21(4).
[3]王遠(yuǎn)洋,周淵平,郭煥麗.Linux下基于Socket多線程并發(fā)通信的實現(xiàn)[J].微計算機(jī)信息,2009,25(15).
[4]羅亞非.基于TCP的Socket多線程通信[J].電腦知識與技術(shù),2009(1):563-565,598.
[5]趙瑋.基于Socket的消息隊列中間件的研究與實現(xiàn)[D].呼和浩特:內(nèi)蒙古大學(xué),2007.
[6]徐小東.基于Socket技術(shù)的數(shù)據(jù)交換平臺的設(shè)計與實現(xiàn)[D].上海:上海交通大學(xué),2006.
[7]任育琦,楊晴.基于Socket技術(shù)的負(fù)荷分擔(dān)通信系統(tǒng)仿真的設(shè)計[J].電腦知識與技術(shù),2013(28).
[責(zé)任編輯:鐘聲賢]