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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于linux網(wǎng)絡(luò)聊天室的設(shè)計(jì)-在線瀏覽

2025-02-05 19:27本頁(yè)面
  

【正文】 剛接觸 Linux 操作系統(tǒng)的用戶(hù)帶來(lái)極大的方便,而且通過(guò)設(shè)計(jì)這樣的一個(gè)應(yīng)用程序還能更好的學(xué)習(xí)網(wǎng)絡(luò)編程知識(shí)和掌握 LINUX 平臺(tái)上應(yīng)用程序設(shè)計(jì)開(kāi)發(fā)的過(guò)程,將大學(xué)四年所學(xué)知識(shí)綜合運(yùn)用,以達(dá)到檢驗(yàn)學(xué)習(xí)成果的目的 linux 介紹 Linux 是一種針對(duì) PC 計(jì)算機(jī)和工作站的操作系統(tǒng) ,它具有像 Windows 和 Mac 那樣的功能齊全的圖形用戶(hù) 界面( GUI,Graphical User Interface)。作為一種操作系統(tǒng) ,它具有與 Unix,Mac,Windows 和 Windows NT同樣的功能。 Richard 建立的自由軟件聯(lián)盟出版了兩種許可證 ,GNU 通用公共許可證 (GNU Gneral Public License,GPL)和 GNU函數(shù)庫(kù)通用公共許可證 (GNU Library Gneral Public License,LGPL)。按照 GNU 通用公共許可證的規(guī)定 ,Linux 的源代碼可以自由獲取 ,這滿(mǎn)足了我們學(xué)習(xí)該系統(tǒng)的強(qiáng)烈愿望。通過(guò)這種方式 ,GPL 保證了Linux(以及同一許可證下的大量其他軟件)不僅現(xiàn)在自由可用 ,而且皮后經(jīng)過(guò)任何修改這 《 基于 Linux網(wǎng)絡(luò)聊天室的設(shè)計(jì) 》 第 4 頁(yè) 共 21 頁(yè) 后都仍然可以自由使用。后來(lái) ,他們又在 PDP11 上用 C 語(yǔ)言重新編寫(xiě)(發(fā)明 C 語(yǔ)言的部分目的就在于此) ,把 Unix 做成為了一個(gè)文本處理系統(tǒng) ,這使 Unix 在貝爾實(shí)驗(yàn)室得到廣泛的應(yīng)用。加州大學(xué)伯克利分校的計(jì)算機(jī)系就是其中的一名 ,并地 Unix進(jìn)行了修改增加了許多新的特點(diǎn) ,這就是主為人知的 BSC 版本的 Unix。 Unix 不斷發(fā)展了 ,各種版本被應(yīng)用到不同的計(jì)算機(jī)使用。 ( 1) Linux 的昨天 1991 年 ,一名叫 Linus Torvalds 的芬蘭大學(xué)生對(duì) Unix 各種版本對(duì)于 80386 類(lèi)的機(jī)器的脆弱支持十分不滿(mǎn) ,他決定要開(kāi)發(fā)出一個(gè)全功能的、支持 POSIX 標(biāo)準(zhǔn)的、類(lèi) Unix 的操作系統(tǒng)內(nèi)核 ,該系統(tǒng)吸收了 BSD 和 System V 的優(yōu)點(diǎn) ,同進(jìn)摒棄了它們的缺點(diǎn)。后來(lái) ,他又開(kāi)始了在因特網(wǎng)上尋求廣泛的幫助。它的源代碼量也呈指數(shù)形式增長(zhǎng) ,實(shí)現(xiàn)了基本的 TCP/IP功能 ,此時(shí) Linux 已經(jīng)擁有大約 10 萬(wàn)的用戶(hù)?,F(xiàn)在的 Linux 內(nèi)核由 150 多行代碼組成 ,能作為 Web 服務(wù)器平臺(tái) ,也為越來(lái)越多的商業(yè)用戶(hù)提供文件和打印服務(wù)。 Linux 的企業(yè)級(jí)特性 ,比如支持多處理器、支持大型文件系統(tǒng)、日志文件系統(tǒng)以及密集型計(jì)算和高可用性集群技術(shù) ,也逐步成熟。 KDE 桌面提供的圖形用戶(hù)界面在易用性和可配置方面都能和微軟的 Windows 相媲美。每個(gè)人都有可以自由獲取內(nèi)核源程序 ,每個(gè)人都有要不得以運(yùn)載源程序加以修改 ,而后他人也可以自由獲取你修改后的源程序。 Bazaar 開(kāi)發(fā)模型通過(guò)重視實(shí)驗(yàn) ,征集并充分利用早期的反饋 ,對(duì)巨大數(shù)量的腦力資源進(jìn)行平衡配置 ,可以開(kāi)發(fā)出更優(yōu)秀的軟件。 《 基于 Linux網(wǎng)絡(luò)聊天室的設(shè)計(jì) 》 第 6 頁(yè) 共 21 頁(yè) 2 技術(shù)說(shuō)明 TCP 和 UDP 通信的概念 UDP 通信 UDP 是用戶(hù)數(shù)據(jù)報(bào)協(xié)議的簡(jiǎn)稱(chēng)。 UDP 在傳送數(shù)據(jù)之前不需要先建立連接,遠(yuǎn)地主機(jī)的傳輸層在收到 udp 數(shù)據(jù)報(bào)后,不需要給出任何確認(rèn),所以不能保證其交付時(shí)可靠。 TCP 通信 TCP 是傳輸控制協(xié)議的簡(jiǎn)稱(chēng),它是提供一條全雙工的、可靠的信道。 TCP 不提供廣播和多播服務(wù)。 兩個(gè)計(jì)算機(jī)之間如果使用 TCP 通信,其連接過(guò)程需要三次握手實(shí)現(xiàn),如實(shí)驗(yàn)圖 11 所示。 《 基于 Linux網(wǎng)絡(luò)聊天室的設(shè)計(jì) 》 第 7 頁(yè) 共 21 頁(yè) 圖 12 TCP 連接的釋放過(guò)程 客戶(hù) /服務(wù)器模型 在客戶(hù) /服務(wù)器模型中,多個(gè)相互通信的計(jì)算機(jī)都作為客戶(hù)端,與網(wǎng)絡(luò)服務(wù)器進(jìn)行連接,并通過(guò)服務(wù)器進(jìn)行信息的傳遞。所以,采用客戶(hù) /服務(wù)器模型進(jìn)行網(wǎng)絡(luò)聊天需要分別編寫(xiě)服務(wù)器端和客戶(hù)端的程序,服務(wù)器和客戶(hù)端之間相互通信的同步關(guān)系和各自的程序流程如實(shí)驗(yàn)圖 13 所示。 使用 Socket 接口進(jìn)行網(wǎng)絡(luò)通信的過(guò)程如圖 13 所示,簡(jiǎn)要步驟如下: (1) 建立一個(gè) Socket. (2) 按要求配置 socket,將 socket 連接到遠(yuǎn)程主機(jī)或給 socket 指定以各本地協(xié)議端口。 (4) 關(guān)閉此 socket。 多線程的概念 上述點(diǎn)對(duì)點(diǎn)通信的實(shí)現(xiàn)知識(shí)完成了主機(jī)進(jìn)程與服務(wù)器進(jìn)程之間的連接,建立連接的進(jìn)程之間是一對(duì)一的聯(lián)系,即主機(jī)的一個(gè)進(jìn)程與服務(wù)器的一個(gè)進(jìn)程之間建立的連接。 對(duì)于多個(gè)并發(fā)的任務(wù)需要?jiǎng)?chuàng)建多個(gè)線程或線程去實(shí)現(xiàn)。同一個(gè)端口的發(fā)送和接收是兩個(gè)并發(fā)任務(wù),應(yīng)該由兩個(gè)不同的任務(wù)去分別完成信息的發(fā)送和接收。 那么,發(fā)送和接收兩個(gè)任務(wù)是使用兩個(gè)進(jìn)程還是兩個(gè)進(jìn)程去完成呢? 在網(wǎng)絡(luò)通信中,端口地址是以進(jìn)程為單位進(jìn)程分配的,而一個(gè)進(jìn)程與外界的消息發(fā)送與接收必須通過(guò)分配給它的同一個(gè)端口進(jìn)行。線程不是資源分配 的單位,所以如果使用兩個(gè)線程不會(huì)對(duì)線程分配新的端口。由 《 基于 Linux網(wǎng)絡(luò)聊天室的設(shè)計(jì) 》 第 9 頁(yè) 共 21 頁(yè) 于創(chuàng)建進(jìn)程的進(jìn)程本身會(huì)作為一個(gè)線程來(lái)調(diào)度,所以只需要再創(chuàng)建一個(gè)線程專(zhuān)門(mén)負(fù)責(zé)接收信息就可以了。 《 基于 Linux網(wǎng)絡(luò)聊天室的設(shè)計(jì) 》 第 10 頁(yè) 共 21 頁(yè) 3 系統(tǒng)實(shí)現(xiàn) Linux 提供的有關(guān) Socket 的系統(tǒng)調(diào)用 (1) Socket() 作用: socket 函數(shù)為客戶(hù)機(jī)或 服務(wù)器創(chuàng)建一個(gè) sokcet 格式: int socket(int family,int type,int protocol)。 其中, AF_UNLX 只能夠用于單一的 UNIX 系統(tǒng)進(jìn)程間通信 。 Type:網(wǎng)絡(luò)程序所采用的通信協(xié)議,可以取 SOCK_STREAM 或 SOCK_DGRAM。 (2) bind( ) 格式: int bind(int sockfd,struct sockaddr *addr,int addrlen)。 Sockaddr:表示名字所用的一個(gè)數(shù)據(jù)結(jié)構(gòu),用來(lái)保存地址 (包括 IP 地址和端口 ) Addrlen:設(shè)置結(jié)構(gòu)大小長(zhǎng)度。 作用:監(jiān)聽(tīng)連接信號(hào),和 accepted 函數(shù)合同。 Backlog:表示接入隊(duì)列允許的連接數(shù)目,大多數(shù)系統(tǒng)允許 20 個(gè),也可以子定義 5~ 10 個(gè)。 作用:與 listen 函數(shù)合用,監(jiān)聽(tīng)信息、接收客戶(hù)端請(qǐng)求。 Addr:表示指向局部的數(shù)據(jù)結(jié)構(gòu) struct sockaddrin 的指針。 (5) connect() 格式: int connect( int sockfd , struct sockaddr *serv_addr , int addrlen)。 參數(shù)作用: Sockfd:表示 socket 的文件描述符。 (6) send() 和 recv() 格式 1: Int send (int sockfd, const vod *msg,int len, int flags)。 格式 2: Int recv (int sockfd , void *buf,int len, usigned int flags)。 (7) close( ) 和 shutdown ( ) 格式: Close( int sockfd) 或 Int shutdown(int sockfd , int how)。 (8) 有關(guān)線程的系統(tǒng)調(diào)用函數(shù) pthread_create()、 pthread_join() 實(shí)驗(yàn)過(guò)程說(shuō)明(使用 TCP/IP) (1) 監(jiān)聽(tīng)連接 利用 socket、 bind、 listen 建立連接,步驟是: 1) 先用 socket 函數(shù)初始化 socket,創(chuàng)建新的 sockfd。 參數(shù)說(shuō)明: i_addr 函數(shù) INADDR_ANY 該函數(shù)把由小數(shù)點(diǎn)分開(kāi)的十
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1