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

正文內(nèi)容

基于linux操作系統(tǒng)的聊天軟件的設(shè)計畢業(yè)設(shè)計說明書-在線瀏覽

2025-01-26 16:07本頁面
  

【正文】 T—T貝爾實驗室的 Ken Thompson和 Dennis Ritchie在已經(jīng)廢棄了的 PDP7上開發(fā)的 在 1969 年; 剛開始 它是一個 僅用 用匯編語言單 編寫的一個建議的單用戶 用戶操作系統(tǒng)。 Unix 的最初版本 不收費的供應(yīng)給眾多的大學(xué)的計算機系去使用 。 在這個事間的同時 ,很多其他的 的 Unix 版本也開始萌生。而 Linux最初 就 是專門為 Intel 的個人計算機設(shè)計的。他 將內(nèi)核開發(fā)到了 版 ,這個版本 中 已經(jīng)可以運行 gcc、 bash 和 其他少量的 應(yīng)用程序。它的源代碼量也呈指數(shù)形式 迅速 增長 ,實現(xiàn)了基本的 TCP/IP 功能 ,在此同時大約有 100000 用戶開始使用 Linux 操作系統(tǒng)了, Linux 系統(tǒng)開始被廣大的用戶所認可。現(xiàn)在的 Linux 內(nèi)核 集成了 150 萬 多行代碼 ,不僅可以 作為 Web 服務(wù)器平臺 ,而且也為 越來越多的用戶提供文件和打印服務(wù)。 Linux 的企業(yè)級特性 : Linux 系統(tǒng)不僅 支持多處理器、支持大型文件系統(tǒng)、日志文件系統(tǒng) 而且在 密集型計算和高可用性集群技術(shù) 上面 也逐步成熟。 KDE 桌面提供的圖形用戶界面在易用性和可配置方面和微軟的 Windows 不相上下 。每 學(xué)習(xí)者 都有可以 輕松 自由 的 獲取內(nèi)核源 代碼 ,每個人都 可 以運載源程序 并對其 加以修改 ,而后 的 他人也可以自由獲取你修改后的源程序。集市模型 是 通過重視實驗征集 和 充分利用早期的反饋 ,通過平衡的配置腦力資源 ,從而 開發(fā)出更優(yōu)秀的軟件。 首先服務(wù)器會初始化,然后等待客戶端的連接。 客戶端是注冊好了的,只需要登陸 。注銷時會把對應(yīng)的鏈表節(jié)點銷毀,并且刪除文件對應(yīng)信息??梢詫崿F(xiàn)用↑↓鍵選擇,然后按回車鍵進入與其的私聊界面。而好友界面的倒數(shù)第二個為群聊選擇,當進入群聊時,可以實現(xiàn)多人同時聊天。你的顯示好友界面里的那個客戶端就會消失,同時,有人上線時,會在好友欄加上新加的客戶端。 2 技術(shù)說 明與方案選擇 通信方式 UDP 通信 UDP 是用戶數(shù)據(jù)報協(xié)議的簡稱。它的特點是:無連接, 不能 提供的可靠的信道,但 正是因為 無連接 這個特點使 UDP 具有很好的傳輸效率。 TCP 在數(shù)據(jù)傳送之前必須先建立 相應(yīng)的 連接,數(shù)據(jù)傳送 完成 后 必須 釋放連接。 正是因為 TCP 要提供可靠的、面向連接的運輸 等多樣的 服務(wù),所以增加了 額外的 系統(tǒng)開銷, 例如 確認、流量 的 控制、計時器以及連接管理等 服務(wù) 都需要 消耗 許多系統(tǒng)資源。 圖 11 用三次握手建立 TCP連接 對于 計算機 連接的釋放過程也需要類似的 3 次握手的互相確認的過程,如實驗圖 12所示。 C/S 模型 C/S 模型將應(yīng)用程序分為 server 端和 client 端兩基本的部分, client 端對 server 端發(fā)送請求, server 端對其作出相應(yīng)的回應(yīng)并開始提供服務(wù)。 server 端一直處于等待狀態(tài),當一個 client 端提出請求時。 通常, C/S 模型必須包含兩個獨立的應(yīng)用程序: client 端和 Server 端的應(yīng)用程序。所以 client 端 的通信 既可以理解為 client 端和 Server 端之間的通信。 圖 13 Socket通信流程圖 網(wǎng)絡(luò)套接字( socket)的概念 Socket 接口 是 TCP/IP 的 API,它提供了 相應(yīng)的功能函數(shù)與 例程, 我們 可以使用 對應(yīng)的函數(shù)與例程進行 TCP/IP 應(yīng)用程序 的開發(fā)與維護 。 (3) 按要求通過 Socket 套接字 發(fā)送和接受 相應(yīng)的 數(shù)據(jù) 與信息 。 以上就是 通過 Socket 套接字來 實現(xiàn)點對點 信息 通信 的 4 個編程 的核心 要點。 也正是因為 Red Hat 的方便性,安裝程序?qū)⑾到y(tǒng)的構(gòu)架或軟件安裝方式全部做了包裝,用戶學(xué)到的都是 GUI 界面(圖形用戶界面)上輸入一些設(shè)置值的粗淺知識,至于軟件安裝了那些文件、安裝到哪個文件目錄、系統(tǒng)作了哪些設(shè)置,使用者則一無所知,一旦真正遇到系統(tǒng)程序發(fā)生問題時,要解決問題也就比較困難。 Caldera 有自行研發(fā)的圖形界面的安裝程序向?qū)?,安裝過程可以玩俄羅斯方塊,提供完整的 KDE 桌面環(huán)境,附贈功能強大的商業(yè)軟件,如 StarOffice、圖形界面的硬盤分割工具Partition Magic 等。 通過以上三種方案的比較,考慮適用性,和可操作性,選擇 Red hat Linux 操作系統(tǒng)。由于 去除了 UI 界面,使 vi 編輯器 效率 提高了 很 多 。 VI編輯器 在 Linux上的 重要性是與 Edit 在 DOS 上 的地位是 一樣。 加上紅帽子系統(tǒng)中自帶的 gcc編譯器 和 gdb 調(diào)試 工具,所以 Linux 系統(tǒng)目前最主流的開發(fā)工具。和 在 windows 下開發(fā) 基本相似。 通過以上兩種方案的比較,考慮適用性,和編程習(xí)慣,選擇方案一。而 對于每一個 client 端服務(wù)器都要建立一個相應(yīng)的進程去實現(xiàn)和 client 端的通信。 由于服務(wù)端 接受信息 的行為 是被動的,當 服務(wù)端 沒有信息可以接收時,該進程就 應(yīng)該自動的 阻塞,發(fā)送任務(wù)也 應(yīng)該 一起被阻塞。這樣,當 一個 client 端的請求 被阻塞時,不至于影響 其它的 client 端 的 正常工作 。 方案一 :多進程, 數(shù)據(jù)共享 非常 復(fù)雜,需要用 IPC 處理 ;數(shù)據(jù)是分開 處理的 ,同步 比較簡單 ;但是 內(nèi)存 耗的 多,切換 相應(yīng)的會比較 復(fù)雜, CPU 利用率低創(chuàng)建銷毀、切換復(fù)雜,速度慢 ;編程簡單,調(diào)試簡單; 適應(yīng)于多核、多機分布式;如果一臺機器不夠,擴展到多臺機器比較簡單 。 通過以上兩種方案的比較,考慮適用性,選擇多線程實現(xiàn)對客戶端的監(jiān)聽。通過該技術(shù),系統(tǒng)內(nèi)核首先會緩沖 I/O 數(shù)據(jù),當某個 I/O 準備好后,系統(tǒng)自動通知相應(yīng)的應(yīng)用程序去完成 I/O讀或?qū)懖僮?,這樣應(yīng)用程序可以迅速的完成對應(yīng)的 I/O操作,因而系統(tǒng)不需要等待完成相應(yīng) I/O 操作,從而應(yīng)用程序設(shè)置阻塞。對于 client 端,一旦我們輸 入了一行文字發(fā),系統(tǒng)會自動的讀取,進而發(fā)送給系統(tǒng)內(nèi)的server 端,然后由 server 端反饋給對應(yīng)的目標 client 端。 這 允許進程來決定 那個client 端 是可讀或?qū)懸粋€或多個文件而不 用 阻塞 的 。 實現(xiàn)這個設(shè)備 的 方法分 為下面的 兩步 : 1. 在一個或多個可指示查詢狀態(tài)變化的等待隊列上調(diào)用 poll_wait. 當 文件描述符 不可以 可用來執(zhí)行 I/O 時 , 內(nèi)核 將使 這個進程在 處于等待狀態(tài),一旦又來可使用的文件描述符時, . 驅(qū)動 自動的 通過調(diào)用函數(shù) poll_wait 增加一個 新的 等待隊列到 poll_table 結(jié)構(gòu),原型 : void poll_wait (struct file *, wait_queue_head_t *, poll_table *)。通常的做法是會返回( POLLLIN|POLLRDNORA) POLLRDBAND 如果可 以從設(shè)備讀出帶外數(shù)據(jù),就返回該值,它只可在 linux 內(nèi) 核的某些網(wǎng)絡(luò)代碼中使用,通常不用在設(shè)備驅(qū)動程序 中 POLLPRI 如果可 以無阻塞的讀取高優(yōu)先級(帶外)數(shù)據(jù),就返回該值,返回該值會導(dǎo)致 select 報告文件發(fā)生異常,以為 select 八帶外數(shù)據(jù)當作異常處理 POLLHUP 當讀設(shè) 備的進程到達文件尾時,驅(qū)動程序必須返回該值,依照 select 的功能描述,調(diào)用 select 的進程被告知進程時可讀的。 POLLOUT 如果設(shè)備可以無阻塞地些,就返回該值 POLLWRNORM 設(shè)備已經(jīng)準備好,可以寫了,就返回該值。fd_set39。 39。由于 在不同的平臺上 fd_set 類型的長度 是 不同 的 ,因此 規(guī)定用一組標準的宏定義來處理此類變量 顯得尤其重要 : fd_set set。set)。set)。set)。set)。 在大多數(shù)情況下系統(tǒng)的責(zé)任 之一包括 檢查 fd_set 能包括任意值的文件描述符, 但是當我們知道我們的文件描述符的多少時 你應(yīng)該檢查 /修改宏 FD_SETSIZE的值。 因為 有一些系統(tǒng)對多于 1024 個文件描述符的 fd_set 是存在 支持 的問 題 的 。 select 的基本接口 其實是非常的 簡單 的 : int select(int nfds, fd_set *readset, fd_set *writeset, fd_set *exceptset, struct timeval *timeout)。 readset 用來檢查可讀性的一組文件描述符。 exceptset 用來檢查意外狀態(tài)的文件描述符。 (如果其中 tv_sec 和 tv_usec 都等于 0, 則文件描述符 的狀態(tài)不被影響,但函數(shù)并不掛起 ) 函數(shù)將返回響應(yīng)操作的 總的響應(yīng)了的 描述符,且三組數(shù)據(jù)均在恰當位置被修改,只有響應(yīng)操作的那一些沒有修改。 通過以上兩種方案的比較,考慮適用性,選擇調(diào)用 poll 函數(shù)實現(xiàn) I/O 多路復(fù)用。 參數(shù)說明: family:表示地址族 ( IP地址) ,可以去 AF_UNLX 和 AF_INT。AF_INT 是 可以用于 Inter 的,因而可以允許在遠程主機之間通信,實驗中使用 AF_INT。其中, SOCK_STREAM 表明使用的是 TCP 協(xié)議,; SOCKE_DGRAM 表明使用的是 UDP 協(xié)議。 參數(shù)說明: Sockfd: socket套接字的的文件描述符。 (3) listen() 格式: int listen(int sockfd, int backlog)。 參數(shù)說明: Sockfd:表示調(diào)用返回的文件描述符。 (4) accept() 格式: Int accept (int sockfd, void *addr, int *addrlen)。 參數(shù)說明: sockfd:表示 socket 的文件描述符。 addrlen:表示地址的長度。 作用 :在面向連接的系統(tǒng)中 client 端連接 server 端時使用, connect 必須在 bind 后使用。 servaddr:表示村訪目的端口和 ip 地址(套接字)的數(shù)據(jù)結(jié)構(gòu)。 功能:發(fā)送信息。 作用:用于流式 socket、數(shù)據(jù)報 socket 內(nèi)部之間的通信。 參數(shù)說明:
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1