【正文】
連接的客戶與服務器連接進程流程圖如圖 2。數(shù)據(jù)報套接字 (Datagram Socket) : TCP /IP 協(xié)議族中的 UDP 協(xié)議使用此類接口 , 它是無連接的服務 ,數(shù)據(jù)通過相互獨立的報文進行傳輸 , 提供了一個無連接服務。 Socket 分為以下三種類型 : 流式套接字 ( Stream Socket) : 是最常用的套接字類型 , 文件傳送協(xié)議( FTP) 即使用流式 套接字。套接字 ( Socket) 是介于網(wǎng)絡(luò)應用層和傳輸層之間的編程接口 , 套接字接口提供了訪問下層通信協(xié)議的大量系統(tǒng)調(diào)用和相應的數(shù)據(jù)結(jié)構(gòu)。當給某人打電話時 , 撥叫的是對方用戶的電話號碼。雙方 的通信與通信的兩個端點和他們之間的通信線路有關(guān)。而在 Linux下開發(fā)高性能的網(wǎng)絡(luò)通信程序 , 是充分發(fā)揮 Linux 網(wǎng)絡(luò)特性的一個關(guān)鍵因素。應用程序在網(wǎng)絡(luò)上傳輸 ,接收的信息都通過這個 Socket 接口來實現(xiàn)。所以,采用客戶 /服務器模型進行網(wǎng)絡(luò)聊天需要分別編寫服務器端和客戶端的程序,服務器和客戶端之間相互通信的同步關(guān)系和 各自的程序流程如實驗圖 13 所示。 兩個計算機之間如果使用 TCP 通信,其連接過程需要三次握手實現(xiàn),如實驗圖 11 所示。 TCP 通信 TCP 是傳輸控制協(xié)議的簡稱,它是提供一條全雙工的、可靠的信道。 2 技術(shù)說明 TCP 和 UDP 通信的概念 UDP 通信 UDP 是用戶數(shù)據(jù)報協(xié)議的簡稱。每個人都有可以自由獲取內(nèi)核源程序 ,每個人都有要不得以運載源程序加以修改 ,而后他人也可以自由獲取你修改后的源程序。 Linux 的企業(yè)級特性 ,比如支持多處理器、支持大型文件系統(tǒng)、日志文件系統(tǒng)以及密集型計算和高可用性集群技術(shù) ,也逐步成熟。它的源代碼量也呈指數(shù)形式增長 ,實現(xiàn)了基本的 TCP/IP 功能 ,此時 Linux 已經(jīng)擁有大約 10 萬的用戶。 ( 1) Linux 的昨天 1991 年 ,一名叫 Linus Torvalds 的芬蘭大學生對 Unix 各種版本對于 80386類的機器的脆弱支持十分不滿 ,他決定要開發(fā)出一個全功能的、支持 POSIX 標準的、類 Unix 的操作系統(tǒng)內(nèi)核 ,該系統(tǒng)吸收了 BSD 和 System V 的優(yōu)點 ,同進 摒棄了它們的缺點。加州大學伯克利分校的計算機系就是其中的一名 ,并地 Unix 進行了修改增加了許多新的特點 ,這就是主為人知的 BSC 版本的 Unix。通過這種方式 ,GPL 保證了 Linux(以及同一許可證下的大量其他軟件)不僅現(xiàn)在自由可用 ,而且皮后經(jīng)過任何修改這后都仍然可以自由使用。 Richard 建立的自由軟件聯(lián)盟出版了兩種許可證 ,GNU 通用公共許可證 (GNU Gneral Public License,GPL)和 GNU 函數(shù)庫通用公共許可證 (GNU Library Gneral Public License,LGPL)。因此制作一個 Linux 操作系統(tǒng)下的擁有人性化界面的實時通訊工具,將給那些剛剛接觸 Linux 操作系統(tǒng)的 用戶帶來極大的方便,而且通過設(shè)計這樣的一個應用程序還能更好的學習網(wǎng)絡(luò)編程知識和掌握 LINUX平臺上應用程序設(shè)計開發(fā)的過程,將大學四年所學知識綜合運用,以達到檢驗學習成果的目的 linux 介紹 Linux 是一種針對 PC 計算機和工作站的操作系統(tǒng) ,它具有像 Windows 和Mac 那樣的功能齊全的圖形用戶界面( GUI,Graphical User Interface)。 基于 Linux 網(wǎng)絡(luò)聊天室的設(shè)計 班級: 網(wǎng)絡(luò)工程 103 1 背景 開發(fā)背景 在網(wǎng)絡(luò)無所不在的今天,在 Inter 上,有 ICQ、 MSN、 Gtalk、 OICQ 等網(wǎng)絡(luò)聊天軟件,極大程度上方便了處于在世界各地的友人之間的相互聯(lián)系,也使世界好像一下子縮小了, 不管你在哪里,只要你上了網(wǎng),打開這些軟件,就可以給你的朋友發(fā)送信息,不管對方是否也同時在線,只要知道他有號碼。 Linus Torvald 和其它的遍布世界各地的編程人員共同開發(fā)的。大部分 GNU 工程的軟件和文檔是以 GNU 通用公共許可證發(fā)行的 ,但是有一些庫是以 GNU 函數(shù)庫通用公共許可證發(fā)行的。 Unix 是由 AT—T 貝爾實驗室的 Ken Thompson 和 Dennis Ritchie 于 1969年在一臺已經(jīng)廢棄了的 PDP7 上開發(fā)的;最初它是一個用匯編語言寫成的單用戶操作系統(tǒng)。與此同時 ,其它獨立開發(fā)的 Unix 版本也開始萌生。他獨立把這個內(nèi)核開發(fā)到 版 ,這個版本已經(jīng)可以運行g(shù)cc、 bash 和很少的一些應用程序。 ( 2) Linux 的今天 作為一各服務器級的操作系統(tǒng) ,Linux 已經(jīng)成熟了。 桌面上的 Linux 也在繼續(xù)完善。 Linux 這種獨特的自由流暢的開發(fā)模型已被命名為bazaar(集市模型)。它是以中午連接的邏輯通信信道。 TCP提供面向連接的服務,在傳送數(shù)據(jù)之前必須先建立連接,數(shù)據(jù)傳送 結(jié)束后要釋放連接。 圖 11 用三次握手建立 TCP 連接 對于兩個計算機之間連接的釋放過程也需要類似的 3 次握手的互相確認的過程,如實驗圖 12 所示。 S o c k e t ( )B i n d ( )L i s t e n ( )A c c e p t ( )R e a d ( )W r i t e ( )R e a d ( )C l o s e ( )T c p 服 務 器S o c k e t ( )C o n n e c t ( )W r i t e ( )R e a d ( )C l o s e ( )T c p 客 戶 端阻 塞 直 到 有 客 戶端 連 接建 立 連 接請 求 數(shù) 據(jù)回 應 數(shù) 據(jù)結(jié) 束 連 接處 理 請 求 圖 13 Socket 通信流程圖 網(wǎng)絡(luò)套接字( socket)的概念 1 介紹 上世紀中后期 , 在美國國防部高研署 (DARPA)將 TCP /IP 的軟件提 供給加利尼亞大學 Berkeley 分校后 , TCP /IP 很快被集成到 Unix 中 , 同時出現(xiàn)了許多成熟的 TCP /IP 應用程序接口 (API) 。在應用開發(fā)中就像使用文件句柄一樣 , 可以對Socket 句柄進行讀、寫操作。 2 Socket 原理簡介 當用電話與他人通信時 , 必須拿起話筒 , 撥叫對方的電話號碼 , 然后等待對方的應答 。Linux 中的套接口與電話非常相似。而套接口中的網(wǎng)絡(luò)地址就相當于電話號碼。在Linux 中 , 套接字接口是應用程序訪問下層的網(wǎng)絡(luò)協(xié)議的惟一方法。提供一個面向連接、可靠的數(shù)據(jù)傳輸服務 , 數(shù)據(jù)無差錯、無重復地發(fā)送 , 且按發(fā)送順序接收。數(shù)據(jù)包以獨立包形式被發(fā)送 , 不提供無錯保證 , 數(shù)據(jù)可能丟失或重復 , 并且接收順序混亂。 Socket 工作過程如下 : 服務器首先啟動 , 通過調(diào)用 Socket (), 建立一個Socket, 然后調(diào)用 bind()將該 Socket 和本地網(wǎng)絡(luò)地址綁系在一起 , 再調(diào)用listen()使 Socket 做好偵聽的準備 , 并規(guī)定它的請求隊列的長度 ,之后就調(diào) 用 accept()來接收連接。 Socket 通信程序開發(fā) 下面詳細說明 Socket 通信程序的開發(fā)