【正文】
四、移動光標 代碼定義: ESC[nA: 光標上移 n 行 ; ESC[nB: 光標下移 n 行 ; ESC[nC: 光標右移 n 個字符 ; ESC[nD: 光標左移 n 個字符 ; ESC[n。 二、刪除字符代碼 代碼定義: ESC[nX: 清除光標右邊 n 個字符,光標不動 ; ESC[K 或 ESC[OK: 清除光標右邊全部字符,光標不動 ; ESC[1K: 清除光標左邊全部字符,光標不動 ; ESC[2K: 清除整行,光標不動 ; ESC[J 或 ESC[OJ: 清除光標右下屏所有字符,光標不動 ; ESC[1J: 清除光標左上屏所有字符,光標不動 ; ESC[2J 或 ESCc: 清屏,光標移到左上角 ; ESC[nM: 刪除光標之下 n 行,剩下行往上移,光標不動 ; ESC[nP: 刪除光標右邊 n 個字符,剩下部分左移,光標不動 。\03339。 因此,對于從每個客戶端發(fā)來的請求,服務(wù)器端都要創(chuàng)建相應(yīng)的線程去接收并處理;同理,對于客戶端而言,也要創(chuàng)建一個線程去讀取服務(wù)器端發(fā)來的信息。因此,不能通過創(chuàng)建進程方式來解決上訴問題,因為兩個進程會分別對應(yīng)兩個不同的端口,而發(fā)送和接收必須使用同一端口。使用一個進程去完成發(fā)送信息是沒有問題的,因為發(fā)送總是主動的;而使用同一個進程再去完成接 10 受信息去不一定會成功 , 因為接受信息是被動的 , 所以當沒有信息可以接收時 ,該進程就 會被阻塞 , 從而導(dǎo)致發(fā)送任務(wù)也一起被阻塞。 當所有的數(shù)據(jù)操作結(jié)束以后 , 可以調(diào)用 close( )函數(shù)來釋放該 Socket, 從而停止在該 Socket 上的任何數(shù)據(jù)操作。 recv( )函數(shù)原型為 : int recv ( int sockfd, void buf, int len, unsignedint flags); sockfd 是接收數(shù)據(jù)的 Socket 描述符 ; buf 是存放接收數(shù)據(jù)的緩沖區(qū) ; len 是緩沖的長度。 flags一般情況下置為 0。 步驟 6: 數(shù)據(jù)傳輸 send( )和 recv( )。而服務(wù)器可以繼續(xù)在以前的那個 Socket 上監(jiān)聽 , 同時可以在新的 Socket 描述符上進行數(shù)據(jù) send ( )(發(fā)送 ) 和recv( )(接收 ) 操作。當 listen 遇到錯誤時返回 1, errno 被置為相 應(yīng)的錯誤碼。進行客戶端程序設(shè)計無須調(diào)用 bind( ), 因為這種情況下只需知道目的機器的 IP 地址 , 而客戶通過哪個端口與服務(wù)器建立連接并不需要關(guān)心 , 內(nèi)核會自動選擇一個未被占用的端口供客戶端來使用。另外要注意的是 , 當調(diào)用函數(shù)時 , 一般不要將端口號置為小于 1024 的值 , 因為 1~ 1024 是保留端口號 , 可以使用大于 1024 中任何一個沒有被占用的端口號。 int bind ( int sockfd, struct sockaddr _my_addr,int addrlen) ; 8 sockfd 是一個 Socket 描述符 , my_addr 是一個指圖 計算機應(yīng)用 向包含有本機 IP 地址及端口號等信息的 sockaddr 類型的指針 ; addrlen 常被設(shè)置為 sizeof ( structockaddr), 如果函數(shù)調(diào)用成功 , 就返回 0, 否則就返回為 1, 可以通過查看errno 的值來了解錯誤的原因。 Socket( )調(diào)用返回一個整型 Socket 描述符 , 可以在后面的調(diào)用使用它 , 當其值為 1 時 , 說明有錯誤發(fā)生。最后 , 待數(shù)據(jù)傳送結(jié)束后 , 雙方調(diào)用 close( )關(guān)閉 Socket。 Socket 通信過程與程序開發(fā) ( 1) Socket 通信過程 基于 TCP 可靠連接的客戶與服務(wù)器連接進程流程圖如圖 。 數(shù)據(jù)報套接字 (Datagram Socket): TCP /IP 協(xié)議族中的 UDP 協(xié)議使用此類接口,它是無連接的服務(wù) ,數(shù)據(jù)通過相互獨立的報文進行傳輸,提供了一個無連接服務(wù)。套接字在 TCP /IP 網(wǎng)絡(luò)模型中的地位如圖 所示。 TCP /IP 是計算機互連最常使用的網(wǎng)絡(luò)通訊協(xié)議 , TCP /IP 的核心部分由網(wǎng)絡(luò)操作系統(tǒng)的內(nèi)核實現(xiàn) , 應(yīng)用程序通過編程接口來訪問 TCP /IP。套接口與電話的相似性還表現(xiàn)在另一方面。 ( 2) Socket 原理 當用電話與他人通信時,必須拿起話筒,撥叫對方的電話號碼,然后等待對方的應(yīng)答; 當雙方進行通話的時候,就建立了一個具有兩個端點的通信線路,這兩個端點是 :本地的電話號碼 ( 在本地位置 );對方的電話號碼 ( 在對方的位置處 ) 。在應(yīng)用開發(fā)中就像使用文件句柄一樣 , 可以對 Socket 句柄進行讀、寫操作。 網(wǎng)絡(luò)套接字 ( 1) Socket 基本概念 上世紀中后期,在美國國防部高研署 (DARPA)將 TCP /IP 的軟件提供給加利尼亞大學(xué) Berkeley 分校后 , TCP /IP 很快被集成到 Unix 中 , 同時出現(xiàn)了許多成熟的 TCP /IP 應(yīng)用程序接口 (API) 。 圖 用三次握手建立 TCP 連接 對于兩個計算機之間連接的釋放過程也需要類似的 3 次握手的互相確認的過程,如圖 所示。 TCP提供面向連接的服務(wù),在傳送數(shù)據(jù)之前必須先建立連接,數(shù)據(jù)傳送結(jié)束后要釋放連接。 3 1 基本原理 TCP 和 UDP 通信 ( 1) UDP 通信 UDP 是 User Datagram Protocol 的簡稱, 中文名是用戶數(shù)據(jù)報協(xié)議,是 OSI 參考模型中一種無連接的傳輸層 協(xié)議 ,提供面向事務(wù)的簡單不可靠信息傳送服務(wù), IETF RFC 768 是 UDP 的正式規(guī)范 [4]。 Linux 的明天 Linux 最強大的生命力在于其公開的開發(fā)過程。它既被當作郵件服務(wù)器的一種候選平臺 , 也被當作一種強壯而安全的防火墻。 Linux 也廣泛應(yīng)用在 嵌入式 設(shè)備上,如 手機 、 平板電腦 、 路由器 、 電視 和 電子游戲機 等。嚴格來講,術(shù)語 Linux 只表示操作系統(tǒng)內(nèi)核本身,但通常采用 Linux 內(nèi)核來表達該意思, Linux 則常用來指基于 Linux 內(nèi)核的完整操作系統(tǒng),包括 GUI組件和許多其他實用工具。在移動設(shè)備上廣泛使用的 Android操作系統(tǒng)就是創(chuàng)建在 Linux 內(nèi)核之上。由于這些系統(tǒng)工具和庫主要由 GNU計劃提供, 自由軟件基金會 提議將該組合系統(tǒng)命名為 GNU/Linux。 二、 Linux 介紹 Linux 是一 種自由和開放源代碼的 類 UNIX操作系統(tǒng) 。 【關(guān)鍵詞】 網(wǎng)絡(luò)聊天室 Linux 聊天程序 III The Development of Network Chat Program Based on Linux Abstract Linux operating system as an open source operating system is used by more and more people. It has the advantage of the open operating system source code! Realtime munication tools have produced a humanized interface under the Linux operating system. It will bring great convenience to the users who just contact Linux operating system. Design and Implementation of the course in under Linux simple work chat rooms. Prepared in the Linux and debugging serverside processes and client to achieve the client, server and munications link between. Can open a standalone in three windows were running customer, client, the server program or two hosts connected to one as customers and the other as a client and server mode. The design of the work socket using the socket and multithreaded applications in the work and under Linux based vim editor. The program by the success of gcc debug debugger, you can chat in the use of standalone work. 【 Key words 】 work chat room Linux chat program 1 緒論 一、背景 在網(wǎng)絡(luò)無所不在的今天, 在 Inter 上,有 ICQ、 MSN、 Gtalk、 OICQ 等網(wǎng)絡(luò)聊天軟件,極大程度上方便了處于在世界各地的友人之間的相互聯(lián)系,也使世界好像一下子縮小了,不管你在哪里,只要你上了網(wǎng),打開這些軟件,就可以給你的朋友發(fā)送信息,不管對方是否也同時在線,只要知道他有號碼。在 Linux 下編寫并調(diào)試服務(wù)器端程序和客戶端程序,實現(xiàn)了客戶、客戶之間的連接和通信。 10 論文篇幅 10000 字左右。 5 論文質(zhì)量35% 文題相符 較好地完成論文選題的目的要求。 10 綜合運用 知識能力 能運用所學(xué)專業(yè)知識闡述問題;能對查閱的資料進行整理和運用;能對其科學(xué)論點進行論證。 5 實評總分 成績等級 指 導(dǎo)教師評審意見: 指導(dǎo)教師簽名: K 評閱教師評定成績 評審基元 評審要素 評審內(nèi)涵 滿分 評閱教師 實評分 選題質(zhì)量25% 目的明確 符合要求 選題符合專業(yè)培養(yǎng)目標,體現(xiàn)學(xué)科、專業(yè)特點和教學(xué)計劃的基本要求,達到畢業(yè)論文(設(shè)計)綜合訓(xùn)練的目的。 5 寫作水平 論點鮮明;論據(jù)充分;條理清晰;語言流暢。 10 研究方案的 設(shè)計能力 整體思路清晰;研究方案合理可行。 10 理論意義或 實際價值 符合本學(xué)科的理論發(fā)展,有一定的學(xué)術(shù)意義;對經(jīng)濟建設(shè)和社會發(fā)展的應(yīng)用性研究中的某個理論或方法問題進行研究,具有一定的實際價值??梢栽趩螜C上開辟三個窗口分別運行客戶、客戶、服務(wù)器端的程序或者將兩臺主機連接一臺作為客戶和另一臺作為服務(wù)器與客戶端的方式。 學(xué) 生 簽 名: 2020 年 5 月 6 日 指導(dǎo)教師簽名: 2020 年 5 月 6 日 答辯小組組長意見 (對情況是否屬實做出意見 ) 組長 (簽名 ): 年 月 日 注:本表與畢業(yè)論文一起裝訂存檔。參考更多資料,豐富論文內(nèi)容。 學(xué) 生 簽 名: 2020 年 1月 4 日 指導(dǎo)教師簽名: 2020 年 1月 4 日 指導(dǎo)內(nèi)容 記錄 (二 ) 根據(jù)畢業(yè)設(shè)計論文要求,指導(dǎo)確定初步方案以及大致如何去實現(xiàn)。利用課余時間到圖書館和網(wǎng)絡(luò)上查閱資料,并虛心向老師請教和同學(xué)進行學(xué)習(xí)交流,保障畢業(yè)設(shè)計的順利完成 。 (2)經(jīng)驗總結(jié)法。而且通過設(shè)計這樣的一個應(yīng)用程序還能更好的學(xué)習(xí)網(wǎng)絡(luò)編程知識和掌握 LINUX平臺上應(yīng)用,程序設(shè)計開發(fā)的過程將大學(xué)四年所學(xué)知識綜合運用,以達到檢驗學(xué)習(xí)成果的目的。 Linux 操作系統(tǒng)作為一個開源的操作系統(tǒng)被越來越多的人所應(yīng)用。 完成論文修改并定稿, 準備答辯。 (1)實現(xiàn)界面終端輸入; (2)實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳輸; (3)實現(xiàn)局域網(wǎng)聊天。 本科學(xué)生畢業(yè)論文(設(shè)計) 湖南科技學(xué)院本科畢業(yè)論文(設(shè)計)誠信聲明 題 目 (中 文 ): 基于 Linux的網(wǎng)絡(luò)聊天程序的開發(fā) (英 文 ): The Development of Network Chat Program Based on Linux 姓 名 學(xué)