新聞中心

        EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 一種基于嵌入式實(shí)時(shí)操作系統(tǒng)的微機(jī)保護(hù)裝置網(wǎng)絡(luò)通信方案

        一種基于嵌入式實(shí)時(shí)操作系統(tǒng)的微機(jī)保護(hù)裝置網(wǎng)絡(luò)通信方案

        作者: 時(shí)間:2011-05-20 來(lái)源:網(wǎng)絡(luò) 收藏


          2 基于雙緩沖隊(duì)列的設(shè)計(jì)

        本文引用地址:http://www.104case.com/article/156291.htm

          的基石是套接字,一個(gè)套接字是通信的一端,在這一端上可以找到與其對(duì)應(yīng)的一個(gè)名字。一個(gè)正在被使用的套接字都有它的類(lèi)型和其相關(guān)的任務(wù),VxWorks可以實(shí)現(xiàn)與BSD4.4TCP/IP兼容的Socket編程接口。由于面向連接的服務(wù)器使用的傳輸層協(xié)議可保證數(shù)據(jù)傳送的可靠性和順序性,因此,本文的系統(tǒng)端采用基于流Socket的客戶(hù)機(jī)/服務(wù)器(Client/Server)編程模式,其程序可以分為客戶(hù)端程序和服務(wù)端程序。其通信模型如圖2所示。


          2.1 客戶(hù)端程序設(shè)計(jì)

          所謂客戶(hù)端服務(wù)程序,就是主要用來(lái)發(fā)出服務(wù)請(qǐng)求的程序。客戶(hù)端程序設(shè)計(jì)要知道服務(wù)端的地址、服務(wù)所提供的端*及服務(wù)使用的傳輸層協(xié)議(TCP協(xié)議)。在客戶(hù)/服務(wù)器模式中,客戶(hù)端程序可以通過(guò)兩種形式找到服務(wù)器:一是通過(guò)指定服務(wù)器的IP地址和端*來(lái)找到服務(wù)端;二是通過(guò)廣播的形式來(lái)來(lái)尋找服務(wù)器。本系統(tǒng)的客戶(hù)端程序應(yīng)用第一種形式來(lái)尋找服務(wù)器。知道了服務(wù)端的位置后,客戶(hù)端任務(wù)就可以打開(kāi)一個(gè)套接字,然后通過(guò)連接服務(wù)器來(lái)發(fā)送和接收數(shù)據(jù)。

          面向連接的TCP客戶(hù)端編程結(jié)構(gòu)分為部分:一是以TCP連接服務(wù)器,TCP協(xié)議是一種可保證傳輸可靠,且能順序的傳輸層協(xié)議。在連接服務(wù)器之前,先要申請(qǐng)一個(gè)SOCK_STREAM類(lèi)型的套接字,該套接字的通信域應(yīng)制定為PF_INET類(lèi)型;二是使用TCP與服務(wù)器通信,因?yàn)門(mén)CP是面向連接的協(xié)議,在連接建立以后,它可以通過(guò)send、recv等調(diào)用來(lái)進(jìn)行通信,就像管道一樣;三是關(guān)閉TCP連接,即在客戶(hù)端程序結(jié)束,或使用完一個(gè)套接字后,可以使用close來(lái)關(guān)閉一個(gè)套接字。

          2.2 服務(wù)端程序設(shè)計(jì)

          在服務(wù)端程序設(shè)計(jì)中,可以根據(jù)對(duì)要實(shí)現(xiàn)的網(wǎng)絡(luò)服務(wù)功能來(lái)設(shè)計(jì)自己的應(yīng)用層協(xié)議。本系統(tǒng)服務(wù)端使用的TCP是面向連接的服務(wù)端。在這種模式下,服務(wù)端程序的設(shè)計(jì)就可以不考慮數(shù)據(jù)的可靠傳送,而只要接受連接請(qǐng)求,并通過(guò)該連接進(jìn)行通信即可,這樣,底層的傳輸協(xié)議就自然會(huì)保證數(shù)據(jù)傳送的可靠性。

          服務(wù)端程序設(shè)計(jì)的兩種基本模式是循環(huán)模式和并發(fā)模式。循環(huán)模式就是服務(wù)端進(jìn)程在總體機(jī)構(gòu)上是一個(gè)循環(huán),一次處理一個(gè)請(qǐng)求。并發(fā)模式的服務(wù)端進(jìn)程一般可以同時(shí)處理多個(gè)請(qǐng)求,結(jié)構(gòu)上一般采用父進(jìn)程接受請(qǐng)求,然后產(chǎn)生子進(jìn)程,這樣一般為多進(jìn)程結(jié)構(gòu)。

          本文選用面向連接服務(wù)端的循環(huán)模式,此模式的建立步驟如下:

          (1)創(chuàng)建一個(gè)SOCK_STREAM類(lèi)型的套接字;

          (2)調(diào)用bind指定地址和端口;

          (3)調(diào)用listen未處理連接請(qǐng)求的隊(duì)列長(zhǎng)度;

          (4)調(diào)用accept等待連接請(qǐng)求,一旦有連接請(qǐng)求,accept返回一個(gè)新的套接字描述符;

          (5)通過(guò)新的描述符與客戶(hù)端交互信息,交互完畢,即關(guān)閉新產(chǎn)生的套接字并返回第四步。

          3 系統(tǒng)模型設(shè)計(jì)

          系統(tǒng)中基于Socket模式下的通信過(guò)程分為控制端發(fā)起的通信過(guò)程和受控端發(fā)起的通信過(guò)程,這兩種過(guò)程都是基于客戶(hù)/服務(wù)器的網(wǎng)絡(luò)編程模式。在客戶(hù)/服務(wù)器模式中,請(qǐng)求的一方稱(chēng)為客戶(hù),提供服務(wù)的一方稱(chēng)為服務(wù)器。

        linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 泰和县| 南郑县| 建湖县| 梁平县| 巴彦县| 扶沟县| 德昌县| 吉隆县| 三台县| 丘北县| 龙南县| 呼伦贝尔市| 佳木斯市| 金塔县| 惠东县| 通州区| 同心县| 绵竹市| 平谷区| 徐汇区| 楚雄市| 确山县| 新竹市| 龙井市| 彝良县| 深州市| 万年县| 巩留县| 依兰县| 兰西县| 广丰县| 小金县| 三台县| 吴旗县| 安康市| 登封市| 奉贤区| 西乌珠穆沁旗| 随州市| 淳安县| 古浪县|