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

?

基于項(xiàng)目的嵌入式Linux C開(kāi)發(fā)課程實(shí)施*

2018-01-24 20:24:51章曉敏陳浩松
山西青年 2018年22期
關(guān)鍵詞:服務(wù)器端進(jìn)程編程

章曉敏 陳浩松

(寧波大紅鷹學(xué)院,浙江 寧波 315175)

一、課程項(xiàng)目與課程各單元之間的關(guān)系

“Linux網(wǎng)絡(luò)傳輸系統(tǒng)”是本課程的課程項(xiàng)目,通過(guò)項(xiàng)目導(dǎo)學(xué),指引學(xué)生了解要開(kāi)發(fā)該項(xiàng)目,必須掌握Linux基本命令、shell編程、Linux下文件I/O操作、進(jìn)程控制、進(jìn)程通信、線(xiàn)程、網(wǎng)絡(luò)編程等相關(guān)知識(shí),同時(shí),還必須熟悉一些常用的算法,理解簡(jiǎn)單的編程思想。為了便于理解和掌握Linux C程序設(shè)計(jì)知識(shí),將項(xiàng)目所需的全部知識(shí)按照循序漸進(jìn)的學(xué)習(xí)規(guī)律,劃分為6個(gè)不同的階段。每一階段輔以單元項(xiàng)目進(jìn)行訓(xùn)練,將知識(shí)轉(zhuǎn)化為解決問(wèn)題的技能,為綜合項(xiàng)目的完成打下堅(jiān)實(shí)的基礎(chǔ)[1-2]。

在第 1 階段,通過(guò)項(xiàng)目“SSH終端及登錄”,學(xué)生應(yīng)掌握Linux基本命令的使用。

在第 2 階段,通過(guò)項(xiàng)目“Linux下的學(xué)生成績(jī)統(tǒng)計(jì)”,學(xué)生應(yīng)掌握Linux編程工具的使用:vi,gcc,gdb,make,Makefile。

在第 3 階段,通過(guò)項(xiàng)目“Shell程序設(shè)計(jì)”,命令行參數(shù)、環(huán)境變量設(shè)置和shell語(yǔ)法。

在第 4 階段,通過(guò)項(xiàng)目“文件操作”,學(xué)生應(yīng)掌握Linux文件系統(tǒng)、文件結(jié)構(gòu)和文件I/O。

在第 5 階段,通過(guò)項(xiàng)目“進(jìn)程控制和進(jìn)程通信”,學(xué)生應(yīng)掌握進(jìn)程的創(chuàng)建、進(jìn)程的通信方式以及編程方式

在第 6 階段,通過(guò)項(xiàng)目“基于網(wǎng)絡(luò)的進(jìn)程間通信”,學(xué)生應(yīng)掌握網(wǎng)絡(luò)命令、網(wǎng)絡(luò)協(xié)議、基于TCP和UDP協(xié)議網(wǎng)絡(luò)通信實(shí)現(xiàn)服務(wù)器端和客戶(hù)端一對(duì)一的通信過(guò)程。

因此,課程結(jié)束后,水到渠成地即可開(kāi)發(fā)出“Linux網(wǎng)絡(luò)傳輸系統(tǒng)”課程項(xiàng)目。

二、項(xiàng)目主要內(nèi)容

項(xiàng)目構(gòu)思(C):

我們經(jīng)常會(huì)接觸到一些網(wǎng)絡(luò)應(yīng)用程序,例如網(wǎng)絡(luò)聊天程序等等。這里我們要開(kāi)發(fā)一個(gè)類(lèi)似的系統(tǒng),該系統(tǒng)運(yùn)行于網(wǎng)絡(luò)環(huán)境中,通信雙方可以互相傳輸數(shù)據(jù),并可以將接收到的數(shù)據(jù)保存在文件中。

需求分析:

服務(wù)器:通過(guò)多線(xiàn)程/多進(jìn)程(應(yīng)更側(cè)重于多線(xiàn)程)并發(fā)服務(wù)器方式與客戶(hù)端通信,接受客戶(hù)端連接后,顯示客戶(hù)端IP,接收客戶(hù)端發(fā)來(lái)的數(shù)據(jù)并顯示在屏幕上,然后將該數(shù)據(jù)反轉(zhuǎn)后發(fā)給客戶(hù)端。如果客戶(hù)端發(fā)來(lái)bye,給客戶(hù)端返回信息后斷開(kāi)與客戶(hù)端的連接。

客戶(hù)端:與服務(wù)器建立連接后,從鍵盤(pán)獲得數(shù)據(jù)并發(fā)給服務(wù)器,然后接收服務(wù)器發(fā)力愛(ài)的信息并顯示到屏幕上。如果鍵盤(pán)輸入bye,則斷開(kāi)與服務(wù)器的連接。將建立連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、斷開(kāi)連接過(guò)程的時(shí)間及相關(guān)信息寫(xiě)入日志文件,日志文件名在連接成功后根據(jù)系統(tǒng)時(shí)間命名。

客戶(hù)端與客戶(hù)端通信:兩個(gè)客戶(hù)端都與服務(wù)器建立連接,他們通過(guò)服務(wù)器互相傳輸數(shù)據(jù),即一個(gè)客戶(hù)端將數(shù)據(jù)先傳輸給服務(wù)器,服務(wù)器再將數(shù)據(jù)轉(zhuǎn)發(fā)給另一個(gè)客戶(hù)端。

項(xiàng)目名稱(chēng):Linux網(wǎng)絡(luò)傳輸系統(tǒng)

項(xiàng)目設(shè)計(jì)(D):

(一)程序結(jié)構(gòu)設(shè)計(jì)

在數(shù)據(jù)傳輸過(guò)程中為保證數(shù)據(jù)傳輸?shù)目煽啃裕捎肨CP套接字,繪制TCP套接字傳輸流程。

由于服務(wù)器可能要處理多個(gè)用戶(hù)的請(qǐng)求,采用多進(jìn)程或多線(xiàn)程方式處理客戶(hù)端問(wèn)題。

(二)程序數(shù)據(jù)設(shè)計(jì)

服務(wù)器端:

根據(jù)套接字編程過(guò)程,需要定義以下數(shù)據(jù):監(jiān)聽(tīng)套接字描述符、后者為連接套接字描述符、服務(wù)器端地址結(jié)構(gòu)、客戶(hù)端地址結(jié)構(gòu)。

多進(jìn)程編程,需要定義以下數(shù)據(jù):進(jìn)程ID。

與客戶(hù)端進(jìn)行數(shù)據(jù)傳輸,需要定義以下數(shù)據(jù):接收緩沖區(qū)、發(fā)送緩沖區(qū)、客戶(hù)端名字。

客戶(hù)端:

根據(jù)套接字編程過(guò)程,需要定義以下數(shù)據(jù):套接字描述符、服務(wù)器端地址結(jié)構(gòu)。

與服務(wù)器進(jìn)行數(shù)據(jù)傳輸,需要定義以下數(shù)據(jù):發(fā)送緩沖區(qū)、接收緩沖區(qū)、用戶(hù)緩沖區(qū)。

保存日志文件,需要定義以下數(shù)據(jù):寫(xiě)入文件緩沖區(qū)、當(dāng)前時(shí)間、文件描述符、當(dāng)前時(shí)間的結(jié)構(gòu)體。

(三)根據(jù)系統(tǒng)總體架構(gòu)圖,設(shè)計(jì)程序基本流程

服務(wù)器端流程

客戶(hù)端流程

(四)將總體架構(gòu)圖中的各個(gè)功能模塊分別進(jìn)行設(shè)計(jì),畫(huà)出 N-S 圖

項(xiàng)目構(gòu)思和項(xiàng)目設(shè)計(jì)一起,形成一個(gè)簡(jiǎn)單易懂的項(xiàng)目開(kāi)發(fā)說(shuō)明文檔。

項(xiàng)目實(shí)施(I):

根據(jù)項(xiàng)目設(shè)計(jì)部分得出的 N-S 圖,利用已掌握的 Linux C 語(yǔ)言知識(shí)及編程思想,完成各個(gè)功能模塊的函數(shù)編碼。

項(xiàng)目運(yùn)行(O):

服務(wù)器端運(yùn)行命令:

./server

客戶(hù)端運(yùn)行命令:

./client 127.0.0.1

測(cè)試客戶(hù)端運(yùn)行結(jié)果、服務(wù)器端運(yùn)行結(jié)果和客戶(hù)端日志文件。

三、項(xiàng)目成果物描述

根據(jù)課堂講解和項(xiàng)目開(kāi)發(fā)說(shuō)明文檔,實(shí)現(xiàn)基于TCP或UDP和文件的“Linux網(wǎng)絡(luò)傳輸系統(tǒng)”,提交系統(tǒng)的全部代碼,要求系統(tǒng)要通過(guò)測(cè)試運(yùn)行,并提供較清晰的注釋。

猜你喜歡
服務(wù)器端進(jìn)程編程
編程,是一種態(tài)度
元征X-431實(shí)測(cè):奔馳發(fā)動(dòng)機(jī)編程
編程小能手
紡織機(jī)上誕生的編程
債券市場(chǎng)對(duì)外開(kāi)放的進(jìn)程與展望
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
成功(2018年10期)2018-03-26 02:56:14
在Windows中安裝OpenVPN
社會(huì)進(jìn)程中的新聞學(xué)探尋
我國(guó)高等教育改革進(jìn)程與反思
Linux僵死進(jìn)程的產(chǎn)生與避免
乌拉特中旗| 盐边县| 通州市| 涟水县| 怀安县| 内江市| 太和县| 布尔津县| 荃湾区| 榕江县| 即墨市| 福泉市| 民乐县| 高平市| 洪泽县| 海城市| 扎兰屯市| 大连市| 垣曲县| 台中县| 于田县| 阳山县| 南江县| 西平县| 永康市| 邯郸市| 富顺县| 瑞昌市| 怀安县| 盐津县| 邹城市| 台北县| 临沂市| 甘泉县| 忻州市| 西乌珠穆沁旗| 开平市| 宁陵县| 长葛市| 阜新市| 大姚县|