【正文】
2021屆畢業(yè)設(shè)計說明書 基于 Linux 操作系統(tǒng)的聊天軟件的設(shè)計 學(xué) 院: 電氣與信息工程學(xué)院 學(xué)生姓名: 指導(dǎo)教師: 職稱 講師 專 業(yè): 電子信息工程 班 級: 電子 1002 班 完成時間: 2021 年 5 月 摘 要 這 篇 論文整體 是 在 linux下 并通過 網(wǎng) 絡(luò) 實現(xiàn) 類似于 qq的的一篇操作報告。開發(fā)的框是C/S 框架,由 server端和 client端 組 成 ,首先設(shè)置好端口參數(shù)和 ip 地址,在編譯 ,調(diào)試后實現(xiàn) server端 與 各個 client端的連接 ,連接后以后 server 端作為中間端來使客戶機實現(xiàn)通訊,因為服務(wù)器只存在一個但是客戶端存在多個所以我們必須通過鏈表去管理 ,client端的信息發(fā)送通過封裝在 socket結(jié)構(gòu)體中進行傳輸 。 本設(shè)計采用 TCP/IP協(xié)議 這樣可以 保證連接可靠 ,而且 項目管理中釆用 linux流行的 gcc和 makefile編譯 ,大大 提高了編譯和調(diào)試效率 ,提高 了項目完成 的效率 ,但是為了 模擬 幾 個 client端 我們就需要在 pc機上再 安裝一個虛擬系統(tǒng)來操作 client端。 本次設(shè)計的聊天 通信使用全雙工 ,主要實現(xiàn)了功能如 :用戶的 帳號與密碼的 注冊與登錄 ,客戶點對點 聊天 ,客戶 之間 的 群聊 ,以及文件的發(fā)送與接收。測試運行后的可靠性滿足 Linux網(wǎng)絡(luò)聊天的基本要求。 關(guān)鍵詞 :linux, socket, ,server端 ,client端 ,網(wǎng)絡(luò)編程 Abstract This thesis as a whole is under linux platform and through the local area work to achieve similar qq chat. The overall use of C / S framework, the main server side and client into two parts , set ip and port number , and Linux, pile and debug procedures to achieve client and server connections each client side , and then as the server side following transfer to achieve munication between client end . Since only one server side , and you can have multiple client end , so the server side using a single list to manage multiple client side information , client side encapsulated for transmission of information sent through the body in the socket structure . This design uses the TCP / IP protocol ,so you can ensure reliable connection, but also preclude the use of project management in a popular linux gcc and makefile to pile, pile and debug greatly improved efficiency , improve the efficiency of the pletion of the project, but due to simulate multiple client end Therefore, in the operating environment need to install a virtual system on the PC to operate multiple client side . The chat tool designed for fullduplex munication using munication , to achieve the five main functions: topeer chat between new user registration and login, user , group chat among users , file encryption transmission between users. After running the test program to meet the basic needs of work reliability in linux in chat . Keywords : linux, socket, server side , client end , work programming 目 錄 1 緒 論 1 課題研究的背景及意義 1 TCP/IP 介紹 2 本文的研 究內(nèi)容 4 2 技術(shù)說明與方案選擇 5 通信方式 5 UDP 通信 5 TCP 通信 5 客戶 /服務(wù)器模型 6 網(wǎng)絡(luò)套接字( socket)的概念 7 多線程的概念 7 3 系統(tǒng)實現(xiàn) 11 Linux 提供的有關(guān) Socket 的系統(tǒng)調(diào)用 11 實驗過程說明(使用 TCP/IP) 13 TCP 通信實現(xiàn) 14 4 運行效果 29 結(jié)束語 34 致謝 35 參考文獻 36 附錄 A 服務(wù)器程序 38 附錄 B 客戶端程序 47 1 緒 論 課題研究的背景及意義 隨著計算機應(yīng)用技術(shù)的日益普及,網(wǎng)絡(luò)也遍及到我們生活的每個角落,很好的利用這一資源,將成為我們工作和學(xué)習,帶來極大的方便。并且可以極高的提高我們的工作效率。所以,各種聊天軟件應(yīng)運而生了。如國外 的 MSN 等,國內(nèi)主要的有騰訊的 qq,還有 Ticq 和一些在網(wǎng)頁上的即時通訊工具,像 Chinaren 網(wǎng)站上的 WebMaster 等等,都做得即美觀又強大,騰訊的 qq 有非常大的用戶群。 這些網(wǎng)絡(luò)聊天軟件極大程度上方便了處于在世界各地的友人之間的聯(lián)系,無論你和親人、朋友相隔多遠,你都可以隨時隨地和他們交流。并且,你還可以和外國友人交流學(xué)習。 在網(wǎng)絡(luò)發(fā)展上,最早出現(xiàn)的是分布在很大的地理范圍內(nèi)的遠程網(wǎng)絡(luò)( WideAreaNetwork,WAN),例如美國國防部高級研究計劃局首先研制的 ARPA 網(wǎng),它從 1969 年建立 ,至今已經(jīng)發(fā)展成為跨越幾大洲的巨型網(wǎng)絡(luò)。 70 年代中期由于微型計算機的出現(xiàn)和微處理器的出現(xiàn),以及短程通訊技術(shù)的迅猛發(fā)展,兩者相輔相成,又促進以微機為基礎(chǔ)的各種局域網(wǎng)絡(luò)( Local Area Network, LAN)的飛快發(fā)展, 1975 年美國 Xerox 公司首先推出了 Ether,與此時英國劍橋大學(xué)研制成劍橋環(huán)網(wǎng),他們是 LAN 的代表。 LAN 與 WAN 有所區(qū)別,其特點為: 1)有限的地理范圍,通常網(wǎng)內(nèi)的計算機限于一棟大樓,樓群或一個企業(yè)及單位。 2)較高的通訊速率,大多在每秒 1100M bps ,而 WAN 大多在幾十 Kbps。 3)通訊介質(zhì)多樣。 4)通常為一個部門所擁有。 特別是 80 年代以來,以微機為基礎(chǔ), LAN 技術(shù)有了極其迅速的發(fā)展。 90 年代計算機網(wǎng)絡(luò)化大趨勢尤為明顯。具稱 1978 年全世界約有 700 萬人每天使用計算機,而到 1998 年上升到 5000 萬人,目前全世界已經(jīng)擁有超過一億臺的計算機,預(yù)計每天上機人數(shù)可達 2 億以上。計算機的性能價格比以每年 25%的速度在提高。微機的應(yīng)用已經(jīng)滲透到國民經(jīng)濟的各個部門,乃至家庭和個人。這標志著正步入信息時代,世界范圍內(nèi) 的社會信息數(shù)據(jù)正在每年增長 40%到 45%的年增長率在增加,這就是迫切實現(xiàn)網(wǎng)絡(luò)化的動力源泉。據(jù)稱,約有 65%的計算機要聯(lián)網(wǎng)或已經(jīng)聯(lián)網(wǎng),以求彼此通信,達到資源共享的目標。 90 年代計算機網(wǎng)絡(luò)化更加向深度和廣度方向發(fā)展。人們要求網(wǎng)絡(luò)傳輸?shù)膬?nèi)容范圍增加,諸如數(shù)據(jù)之外,還需傳輸聲音,圖形,圖象和文字,這就是以網(wǎng)絡(luò)為基礎(chǔ)的多媒體技術(shù),使網(wǎng)絡(luò)的應(yīng)用廣度更加擴大,并最終為信息化社會的實現(xiàn)所必須的網(wǎng)絡(luò)連接奠定基礎(chǔ)。當前國際 LAN 的市場上,兩雄稱霸,龍爭虎斗的局面,將可能持續(xù)相當長一段時間。 正如大家知道的那樣, 80 年代后期美國 Novell 公司先是以“一花獨秀,壓倒群芳”之勢占據(jù)了國際 LAN 市場 60%以上,一路領(lǐng)先,扶搖直上,尤其是 NetWare 386 版 推出后,受到普遍的注目;隨后,國際上的軟件公司龍頭老大 Microsoft 公司先后推出了 LAN Manager (即 LAN 3+ Open)、 LAN Manager 和 ,后來居上,成為世界 LAN 的兩大支柱之一。 1992 年 10 月 Microsoft 又搶先發(fā)布了 LAN ,以更 加領(lǐng)先于 Novell 的 NetWare 386 ,但后者立即隨后推出了 NetWare ??梢姟褒垹幓⒍贰保戏质袌龅那榫?。 Novel LAN 采取了“將網(wǎng)絡(luò)協(xié)議軟件與網(wǎng)絡(luò)操作系統(tǒng) NetWare 緊密結(jié)合起來”的設(shè)計構(gòu)想,可達到節(jié)省開銷,提高運行效率之目標。 Novell LAN 最大的特點是與其底層的網(wǎng)卡的無關(guān)性,即是說 NetWare 可以虛擬的在所有流行的 LAN 上面運行,使它成為一個理想的開發(fā)網(wǎng)絡(luò)應(yīng)用軟件的平臺,吸引了廣大用戶軟件人員為之開發(fā)越來越多的網(wǎng)絡(luò)應(yīng)用軟件。反過來又推 動其發(fā)展,同時 Novell LAN 采取了開放協(xié)議技術(shù)( OPT),允許各種網(wǎng)絡(luò)協(xié)議緊密結(jié)合,進而在 NetWare 386 版中采用了 NLM 模塊的組合技術(shù),可以實現(xiàn)異機種聯(lián)網(wǎng)的難題。此外, Novell LAN 不需專用服務(wù)器,占用工作站內(nèi)存最小,使用方便,功能強,效率高,兼容性強,可靠性高,保密性強,容錯性好。尤其在 NetWare 386 版中實現(xiàn)了服務(wù)器軟件的“分布式結(jié)構(gòu)策略”、“橫向信息共享”、“報文傳送”技術(shù)、增添了“ TCP/IP ?!?、實現(xiàn)了“ SNA 協(xié)議”和“開放式數(shù) 據(jù)鏈路接口”等一系列新技術(shù),使 NovellLAN 更深入人心,擴大了市場。 與此同時,微軟的 LAN Manager 和 局域網(wǎng)版除了有一般的基礎(chǔ)的優(yōu)點,還應(yīng)用了“客戶機/服務(wù)器”( Client/Server)的強大內(nèi)網(wǎng)絡(luò)體系結(jié)構(gòu),以及基于多用戶,多任務(wù)并發(fā)先進的 OS/2 作為服務(wù)器,并以 OS/2, Unix, VMS 和 Windows NT 作為系統(tǒng)的開發(fā)平臺,更方便與異類機種訪問網(wǎng)絡(luò)。由于 LAN Manager 與 Windows 的聯(lián)系;使它有更高的的性格比。在網(wǎng)絡(luò)化技術(shù)飛速發(fā)展的今 天, TCP/IP 協(xié)議可謂是立下了汗馬功勞。起先, TCP/IP( Transmission Control Protocol/Inter Protocol)是由美國國防部于 70 年代提出來的,將中大型機連成的網(wǎng)絡(luò)互連起來,并按 TCP/IP 協(xié)議這種模式實現(xiàn)異網(wǎng)之間通訊,接著美國國防部高級計劃局( DARPA)于 70 年代末提出了幾種國際互連( Inter)技術(shù)。這些技術(shù)實現(xiàn)了在科學(xué)研究,軍事和社會生活迫切需要共享的資料。 題 TCP/IP 介紹 Transmission Control Protocol/Inter Protocol 的簡寫,中譯名為傳輸控制協(xié)議 /因特網(wǎng) 互聯(lián)協(xié)議,又名網(wǎng)絡(luò) 通訊協(xié)議 ,是 Inter 最基本的協(xié)議, Inter 國際 互聯(lián)網(wǎng) 絡(luò)的基礎(chǔ),由 網(wǎng)絡(luò)層 的 IP協(xié)議和 傳輸層 的 TCP 協(xié)議組成。 TCP/IP 定義了電子設(shè)備如何連入 因特網(wǎng) ,以及數(shù)據(jù)如何在它們之間傳輸?shù)臉藴?。協(xié)議采用了 4層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的協(xié)議來完成自己的 需求。通俗而言: TCP 負責發(fā)現(xiàn) 傳輸 的問題,一有問題就發(fā)出信號,要求重新傳輸,直到所有 數(shù)據(jù)安全 正確地傳輸?shù)侥康牡?。?IP 是給 因特網(wǎng) 的每一臺電腦規(guī)定一個地址。 ( 1) 協(xié)議優(yōu)勢 在社會長期的發(fā)展過 程中, IP逐步取代了其余的網(wǎng)絡(luò)。這是一個簡單的解釋。 IP 傳輸通用數(shù)據(jù)。數(shù)據(jù)能夠用于任何目的,并且能夠很輕易地取代以前由專有數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)。 ( 2)協(xié)議的缺點 第一,協(xié)議在服務(wù),接口方面的區(qū)分不明確。好的軟件工程在功能與實現(xiàn)上面是有明確的區(qū)分的, TCP/IP 沒有很好地做到這點。 第二,主機 網(wǎng)絡(luò)層本身并不是實際的一層,它定義了網(wǎng)絡(luò)層與數(shù)據(jù)鏈路層的接口。 linux 介紹 Linux 是一種 開 源的 操作系統(tǒng) ,它 擁有 像 Windows 和 Mac 那樣的功能齊全的 UI 界面