freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文-linux下遠(yuǎn)程考試服務(wù)器端處理系統(tǒng)-在線瀏覽

2024-11-14 21:05本頁(yè)面
  

【正文】 t 實(shí)現(xiàn)的。流式是一種面向連接的 Socket,針對(duì)于面向連接的 TCP 服務(wù)應(yīng)用;數(shù)據(jù)報(bào)式 Socket 是一種無(wú)連接的 Socket,對(duì)應(yīng)于無(wú)連接的 UDP 服務(wù)應(yīng)用。 unit 16_t sin_port。 unsigned char sin_zero[8]。 } TCP 協(xié)議簡(jiǎn)介 TCP 提供了完全可靠的通信服務(wù),它能夠自動(dòng)重傳;計(jì)算校驗(yàn)和以保證數(shù)據(jù)的正確性; TCP 協(xié)議保證數(shù)據(jù)在接受端按在發(fā)送端的次序接收,不會(huì)出現(xiàn)后發(fā)送數(shù)據(jù)先到達(dá)的情況;能自動(dòng)地丟棄那些重復(fù)傳輸?shù)臄?shù)據(jù);它提供了流量控制機(jī)制,保證發(fā)送者發(fā)送的數(shù)據(jù)不要太快以至于接收者來(lái)不及處理它們,甚至還考慮了不以過(guò)快的速度發(fā)送數(shù)據(jù)以防止整個(gè)網(wǎng)絡(luò)擁塞。 開發(fā)平臺(tái)簡(jiǎn)介 Linux 系統(tǒng)下的 GCC( GNU C Compiler)是 GNU 推出的功能強(qiáng)大、性能優(yōu)越的多平臺(tái)編譯器,是 GNU 的代表作品之一。 GCC 包含完整的出錯(cuò)檢查和警告提示功能,它們可以幫助 Linux 程序員盡快找到錯(cuò)誤代碼,從而寫出更加 專業(yè)和優(yōu)美的代碼。 調(diào)試器 GDB 能讓你觀察另一個(gè)程序在執(zhí)行時(shí)的內(nèi)部活動(dòng),或程序出錯(cuò)時(shí)發(fā)生了什么。運(yùn)行程序,設(shè)置所有的能影響程序運(yùn)行的東西。當(dāng)程序停止時(shí),讓用戶檢查發(fā)生了什么 ,那樣用戶可以試著修正某個(gè) bug 引起的問(wèn)題,然 后繼續(xù)查找另一個(gè) bug。 應(yīng)用層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信時(shí), TCP 和 UDP 會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問(wèn)題。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與 TCP/ IP 協(xié)議交互提供了稱為套接字 (Socket)的接口。 Socket 原意是 “ 插座 ” 。 SOCKET 編程的基本流程 每一個(gè) Socket 有一個(gè)本地的唯一 Socket 號(hào),由操作系統(tǒng)分配。流式套接字可以提供可靠的、面向連接的通信流。那么數(shù)據(jù)到達(dá)遠(yuǎn)程時(shí)候的順序也是 2。流式套接字的工作原理如 下 圖所示 : s o c k e t ( )b i n d ( )w r i t e ( )a c c e p t ( )r e a d ( )l i s t e n ( )c l o s e ( )c o n n e c t ( )r e a d ( )c l o s e ( )w r i t e ( )s o c k e t ( )服 務(wù) 器客 戶 機(jī)阻 塞 等 待 連 接發(fā) 起 連 接 請(qǐng) 求請(qǐng) 求 數(shù) 據(jù)應(yīng) 答 數(shù) 據(jù) 圖 圖 數(shù)據(jù)包套接字定義了一種無(wú)連接的服務(wù),數(shù)據(jù)通過(guò)相互獨(dú)立的報(bào)文進(jìn)行傳輸,是無(wú)序的,并且不保證可靠性。 數(shù)據(jù)包套接字的工作原理如 下 圖所示 : s o c k e t ( )b i n d ( )r e c v f r o m ( )s e n d t o ( )c l o s e ( )b i n d ( )r e c v f r o m ( )c l o s e ( )s e n d t o ( )s o c k e t ( )服 務(wù) 器客 戶 機(jī)阻 塞 等 待 數(shù) 據(jù)請(qǐng) 求 數(shù) 據(jù)應(yīng) 答 數(shù) 據(jù)處 理 請(qǐng) 求 圖 圖 系統(tǒng)使用的主要函數(shù)介紹 socket()函數(shù) int socket(int domain,int type,int protocol) 第一個(gè)參數(shù) domain 設(shè)置為 “AF_INET” 。第三個(gè)參數(shù)設(shè)置為 0。 accept()函數(shù) int accept(intsockfd,void*addr,int*addrlen) 第一個(gè)參數(shù)是正在監(jiān)聽端口的套接口文件描述符。調(diào)用 connect()中的信息將存儲(chǔ)在這里。第三個(gè)參數(shù)同樣可以使用 sizeof(structsockaddr_in)來(lái)獲得 ,如果出錯(cuò), accept()也將返回 1。 第二個(gè)參數(shù)是 serv_addr 是指向數(shù)據(jù)結(jié)構(gòu) sockaddr 的指針,其中包括目的端口和 IP 地址。 read()和 write()函數(shù) ssize_t read(int filedes, void *buf, size_t nbytes) 返回值:讀取到的字節(jié)數(shù) ; 0(讀到 EOF); 1(出錯(cuò)) read 函數(shù)從 filedes 指定的已打開文件中讀取 nbytes 字節(jié)到 buf 中。例如:如果文件只有 30 字節(jié),而我們想讀取 100 字節(jié),那么實(shí)際讀到的只有 30 字節(jié), read 函數(shù)返回 30 。 B. 從終端設(shè)備( terminal device)讀取時(shí), 一般情況下每次只能讀取一行。 D. 讀取 pipe 或者 FIFO 時(shí), pipe 或 FIFO 里的字節(jié)數(shù)可能小于 nbytes 。 F. 在讀取了部分?jǐn)?shù)據(jù)時(shí)被信號(hào)中斷。 成功時(shí)返回寫的字節(jié)數(shù) 。 并設(shè)置 errno 變量 。 0,此時(shí)出現(xiàn)了錯(cuò)誤 .我們要根據(jù)錯(cuò)誤類型來(lái)處理 。 lseek()函數(shù) off_t lseek(int filedes, off_t offset, int whence) 返回值:新的偏移量(成功), 1(失?。? 參數(shù) offset 的含義取決于參數(shù) whence: 1. 如果 whence 是 SEEK_SET,文件偏移量將被設(shè)置為 offset。 3. 如果 whence 是 SEEK_END,文件偏移量將被設(shè)置為文件長(zhǎng)度加上 offset,offset 可以為正也可以為負(fù)。 alarm()函數(shù) int alarm(unsigned int seconds) 函數(shù)說(shuō)明 alarm()用來(lái)設(shè)置信號(hào) SIGALRM在經(jīng)過(guò)參數(shù) seconds指定的秒數(shù)后傳送給目前的進(jìn)程。 返回值 : 返回之前鬧鐘的剩余秒數(shù),如果之前未設(shè)鬧鐘則返回 0。 sighandler_t signal(int signum, sighandler_t handler) 參數(shù): signum:信號(hào)編碼。 返回說(shuō)明:成功執(zhí)行時(shí),返回以前的信號(hào)處理句柄。 功能描述: 為指定的信號(hào)安裝新的處理句柄。當(dāng)信號(hào)到達(dá)時(shí),如果其處理句柄是 SIG_DFL,那么會(huì)以默認(rèn)的方式處理信號(hào);如果其處理句柄 是 SIG_IGN,那么信號(hào)會(huì)被忽略;最后,如果處理句柄是用戶指定的函數(shù),此時(shí)先將信號(hào)處理方式重置為 SIG_DFL,接著有可能阻塞處理中的信號(hào),最后是調(diào)用信號(hào)處理句柄。 正確返回:在父進(jìn)程中返回子進(jìn)程的進(jìn)程號(hào),在子進(jìn)程中返回 0 錯(cuò)誤返回: 父進(jìn)程中返回 1,沒(méi)有子進(jìn)程創(chuàng)建 下面是發(fā)生錯(cuò)誤時(shí),可能設(shè)置的錯(cuò)誤代碼 errno: EAGAIN:系統(tǒng)調(diào)用 fork 不能得到足夠的內(nèi)存來(lái)復(fù)制父進(jìn)程頁(yè)表。 ENOMEM:對(duì)創(chuàng)建新進(jìn)程來(lái)說(shuō)沒(méi)有足夠的空間,該錯(cuò)誤是指沒(méi)有足夠的空間分配給必要的內(nèi)核結(jié)構(gòu)。功能上能提供設(shè)置合法的考試時(shí)間,驗(yàn)證客服端的合法登陸,拒絕非法用戶登錄,若用戶登錄成功,回送試題和服務(wù)器設(shè)定的考試時(shí)間,等待用戶提交答案,對(duì)考試時(shí)間進(jìn)行限制,對(duì)用戶提交的答案進(jìn)行評(píng)分,添加刪除用戶 ,實(shí)現(xiàn)在客戶提交答案或 考試完成后, 終止終端再登陸,正確的實(shí)現(xiàn) 添加刪除用戶,既要對(duì)添加的用戶學(xué)號(hào)的長(zhǎng)度進(jìn)行限制,也要對(duì) 口令 長(zhǎng)度進(jìn)行限制,防止添加相同學(xué)號(hào)的用戶 。 本系統(tǒng)沒(méi)有對(duì)服務(wù)器上管理用戶的權(quán)限進(jìn)行設(shè)置, 為不足之二 ; 采用 C 開發(fā),由于時(shí)間倉(cāng)促,對(duì) C操作數(shù)據(jù) 庫(kù)的各種函數(shù) 不夠熟悉,沒(méi)能采用正規(guī)的數(shù)據(jù)庫(kù), 此為不足之三 ;最后未能提供 很好的 網(wǎng)絡(luò)出 錯(cuò)故障的處理 能力,此乃 不足之四 。 服務(wù)器端性能需求 作為考試 服務(wù)器 ,應(yīng)該承受起 大負(fù)荷的 工作量 ,因?yàn)樵跒檎麄€(gè)網(wǎng)絡(luò)服務(wù)時(shí),服務(wù)器 端 的工作量是普通工作站的幾倍甚至幾十倍。當(dāng)用戶大批量登錄時(shí),對(duì)讀取本地用戶數(shù)據(jù)信息的能力要求非常迅速和可靠,故要求設(shè)計(jì)一個(gè)比較安全和健壯 ,運(yùn)算速度快 的算法或者循環(huán)實(shí)現(xiàn)這項(xiàng)功能;對(duì)非法用戶的登錄要嚴(yán)格識(shí)別,對(duì)客戶傳過(guò)來(lái)的數(shù)據(jù)要判斷是否完整,如果是在 Inter 上,還要判斷用戶的數(shù)據(jù)是否被更改。安全關(guān)閉相應(yīng)用戶的連接,釋放相應(yīng)的內(nèi)存空間,正確的實(shí)現(xiàn)添加刪除用戶,既要對(duì)添加的用戶學(xué)號(hào)的長(zhǎng)度進(jìn)行限制,也要對(duì) 口令 長(zhǎng)度進(jìn)行限制,防止添加相同學(xué)號(hào)的用戶。 Linux 本來(lái)就是一種運(yùn)行非常穩(wěn)定的系統(tǒng),在它之下開發(fā)的考試服務(wù)器相信也會(huì)運(yùn)行穩(wěn)定和可靠 。 客戶端 功 能需求 客戶端要求實(shí)現(xiàn)安全登錄服務(wù)器,讀取服務(wù)器回送的試題 和考試時(shí)長(zhǎng) , 根據(jù)這個(gè)時(shí)長(zhǎng)設(shè)定時(shí)鐘信號(hào), 然后創(chuàng)建一個(gè)本地臨時(shí)文件,將該用戶的學(xué)號(hào)先保存到這個(gè) 文件中, 然后進(jìn)行試題的回答, 每回答一題就寫到本地臨時(shí)文件中, 答卷完畢, 當(dāng)用戶提交答案 時(shí) 就把臨時(shí)文件中的所有內(nèi)容上傳到服務(wù)器相關(guān)的文件中保存,服務(wù)器響應(yīng)保存答案成功 消息,然后客戶端可刪除本地這個(gè)臨時(shí)文件,安全退出。作為客戶端,在 未提交答案的情況下,要實(shí)現(xiàn)當(dāng)想更改回答問(wèn)題的答案時(shí)可隨時(shí)更改,本系統(tǒng)客戶端能很好地實(shí)現(xiàn)此功能。 客戶端 性 能需求 客戶端 最重要的是 要求有很好的網(wǎng)絡(luò)出錯(cuò)處理能力,因?yàn)閱慰糠?wù)器端的出錯(cuò)處理是遠(yuǎn)遠(yuǎn)不夠的,當(dāng)本地客戶因網(wǎng)絡(luò)故障或者別的原因斷線時(shí),要正確地再次發(fā)起連接,判斷數(shù)據(jù)是否已經(jīng)傳送完整,在傳送不完整或者不成功的情況下要自動(dòng)重傳,當(dāng)服務(wù)器接收答案不成功時(shí)也要重傳,在確保所有信息都被服務(wù)器正確保存的前提下才能安全地關(guān)閉連接 。超時(shí)情況下,要正確可靠地退出程序。 系統(tǒng) 錯(cuò)誤處理需求 無(wú)論任何系統(tǒng)都有多多少少的 Bug 存在,更別說(shuō)一個(gè)沒(méi)有經(jīng)過(guò)系統(tǒng)測(cè)試的軟件。在系統(tǒng)設(shè)計(jì)時(shí),要設(shè)計(jì)各種出錯(cuò)時(shí)返回的識(shí)別碼,系統(tǒng)要正確接收和處理這些識(shí)別碼,返回相關(guān)的出錯(cuò)原因信息,方便程序編寫調(diào)試,寫出更高質(zhì)量的代碼。 必要時(shí)候可以自動(dòng)重啟服務(wù)器程序,防止系統(tǒng)資源被過(guò)度消耗,安全地退出死循環(huán),對(duì)每個(gè)連接的用戶可以正確地分配一定限度的資源,對(duì) TCP/IP協(xié)議棧和接收緩沖區(qū)有很可 靠的故障處理能力。 3 系統(tǒng)概要設(shè)計(jì) 系統(tǒng)概要設(shè)計(jì)準(zhǔn)則 功能簡(jiǎn)潔實(shí)用性 服務(wù)器端無(wú)需很友好的界面,主要是考慮簡(jiǎn)單實(shí)用和穩(wěn)定,穩(wěn)定既要系統(tǒng)的代碼健壯,更要求沒(méi)有必要的代碼花銷,故直接采用控制臺(tái)的形式可以快速啟動(dòng)服務(wù)器,節(jié)約服務(wù)器資源,避免無(wú)需的額外花銷。由于客戶端也采用控制臺(tái)命令模式,故在設(shè)計(jì)時(shí),盡量避免過(guò)多復(fù)雜的操作,且在相關(guān)的地方也會(huì)有系統(tǒng)提示,可滿足用戶的需求。本系統(tǒng)設(shè)計(jì)時(shí)基本上都是采用系統(tǒng)調(diào)用,而 Linux 系統(tǒng)調(diào)用API 是半緊湊的, 且 Linux 程序員很容易記住滿足大多數(shù)應(yīng)用編程(文件系統(tǒng)操作、信號(hào)和 進(jìn)程控制)的系統(tǒng)調(diào)用子集 。 本系統(tǒng)設(shè)計(jì)時(shí),針對(duì)服務(wù)器軟件應(yīng)該提供的最主要功能,圍繞這個(gè)功能不足深化和完善系統(tǒng),盡量實(shí)現(xiàn)系統(tǒng)結(jié)構(gòu)的緊湊性。這樣做 的危險(xiǎn) 是為了應(yīng)對(duì)未來(lái)可能需要進(jìn)行的修改,而造成代碼被過(guò)度工程化地開發(fā)。在軟件開發(fā)過(guò)程中, “ 變化 ” 是司空見慣的事情,如需求、設(shè)計(jì)的 變化,算法的改進(jìn)、程序的變化等 。 系統(tǒng)可靠性 可靠性 (Reliability)是產(chǎn)品在規(guī)定的條件下和規(guī)定的時(shí)間內(nèi)完成規(guī)定功能的能力 ,他的概率度量稱為可靠度 。軟件可靠性與軟件缺陷有關(guān),也與系統(tǒng)輸入和系統(tǒng)使用有關(guān)。但是實(shí)際上任何軟件都不可能達(dá)到百分之百的正確,而且也無(wú)法精確度量。 系統(tǒng)模塊設(shè)計(jì) 系統(tǒng) 總體工作 模型 系統(tǒng)工作模型 : 服 務(wù)器 父進(jìn) 程監(jiān) 聽子 進(jìn)程 0 1服 務(wù)子 進(jìn)程 0 4服 務(wù)W a i tW a i tW a i tW a i t子 進(jìn)程 0 2服 務(wù)W a i t客 戶 0 3 父 進(jìn) 程子 進(jìn)程 0 3服 務(wù)W a i t客 戶 0 4 父 進(jìn) 程W a i tW a i t客 戶 0 3 子 進(jìn) 程客 戶 0 4 子 進(jìn) 程客 戶 0 2 子 進(jìn) 程客 戶 0 1 子 進(jìn) 程客 戶 0 2 父 進(jìn) 程客 戶 0 1 父 進(jìn) 程 圖 服務(wù)器父進(jìn) 程 處理 流程圖: 父 進(jìn) 程主 菜 單1啟 動(dòng) 服 務(wù) 系 統(tǒng) 管 理23退 出用 戶 管 理子 菜 單 123評(píng) 分顯 示 結(jié) 果設(shè) 置 時(shí) 間刪 除 用 戶子 菜 單 2添 加 用 戶23已 存 在 ?1是已 存 在 ?正 確 ? 否是時(shí) 間 到 ?是否計(jì) 時(shí)連 接 到 來(lái) ?否是派 生 子 進(jìn) 程關(guān) 閉 連 接 是定 時(shí) 器成 功 ?否退 出監(jiān) 聽 中時(shí) 鐘 信 號(hào)收 到 信 號(hào)12子 進(jìn) 程 信 號(hào)回 收 子 進(jìn) 程1刪 除添 加否繼 續(xù) ?是否否是 拒 絕繼 續(xù) ?否是輸 入 答 案3 圖 在主菜單中選擇 1 時(shí),父進(jìn)程在考試開始時(shí)啟動(dòng)監(jiān)聽且只負(fù)責(zé)監(jiān)聽, 在用戶成功登錄后,和對(duì)應(yīng)的某一用戶建立連接,之后父進(jìn)程創(chuàng)建子進(jìn)程之后把連接交給子進(jìn)程,馬上返回繼續(xù)監(jiān)聽下一個(gè) 用戶的 請(qǐng)求。 這里要設(shè)計(jì)的模塊有:一是提供 獲取系統(tǒng)當(dāng)前 時(shí)間 的 模塊 (將當(dāng)前的 時(shí)和 分轉(zhuǎn)為整型 ); 二是 獲取設(shè)
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1