版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計</p><p> 字 第 </p><p> 學(xué) 院 信息科學(xué)與工程學(xué)院 </p><p> 班 級 通信0901 </p><p> 姓 名 </p><p> 學(xué)
2、 號 </p><p> 2011年6月26日</p><p> 課 程 設(shè) 計 任 務(wù) 書</p><p> 信息科學(xué)與工程 學(xué)院 通信工程 專業(yè)</p><p> 學(xué)生姓名 學(xué)號
3、 </p><p> 課程設(shè)計題目 點對點通信的計算機實現(xiàn) </p><p> 課程設(shè)計內(nèi)容與要求:</p><p> 1.使用Java高級面向?qū)ο缶幊陶Z言編寫一個網(wǎng)絡(luò)聊天程序。</p><p> 2.聊天程序應(yīng)該能夠通過英特網(wǎng)進行簡單的字符發(fā)送與接收。</p><p> 3
4、.類似于一般的主流網(wǎng)絡(luò)即時聊天程序,以騰訊QQ為例,為了簡化程序和系統(tǒng)結(jié)構(gòu),將騰訊QQ中的“客戶端——服務(wù)器——客戶端”的數(shù)據(jù)傳輸方式改為“客戶端——服務(wù)器”的模式。</p><p> 4.程序應(yīng)該具有圖形界面,要具備聊天程序的基本雛形。</p><p> 5. 理解Socket的基本概念工作原理,掌握Socket的建立、監(jiān)聽、連接、發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。</p><
5、p> 6*.完成網(wǎng)線水晶頭的制作并了解其工作機理。(見附二部分)</p><p> 設(shè)計開始日期 2011年6月21日 指導(dǎo)教師 </p><p> 教研室主任 (簽字)</p><p> 設(shè)計完成日期 2011年6月25日</p><p> 院長(系主任)
6、 (簽字)</p><p> 一.時間安排與安排情況:</p><p> 6月21日 了解課題,著重查找與課題相關(guān)的資料。</p><p> 6月22日——6月23日 仔細閱讀相關(guān)理論知識,并根據(jù)具體情況,確定設(shè)計的方案。</p><p> 6月23日——6月24日 編寫Java程序并調(diào)試
7、程序。</p><p> 6月25日 課程設(shè)計答辯,同時完成課程設(shè)計報告。</p><p><b> 二.課題介紹:</b></p><p> 互聯(lián)網(wǎng)的普及給人們的通訊方式帶來了一場革命,而在這場革命又反過來促進互聯(lián)網(wǎng)的普及以及進步,即時聊天是因特網(wǎng)的重要運用之一,目前主流即時聊天軟件有騰訊QQ,微軟MSN,
8、網(wǎng)易泡泡,新浪UC,阿里旺旺等等,而其中風(fēng)靡中國乃至亞洲的QQ軟件以其合理的界面,豐富的功能,以及超強的性能成為無數(shù)企業(yè)模仿的對象。目前的網(wǎng)路主流聊天程序雖然用途各有側(cè)重,但其實基本原理和架構(gòu)是差不多的。我們這次做的就是即使網(wǎng)絡(luò)聊天程序中最基本最簡單但也最核心的部分——即寫一個程序能夠?qū)崿F(xiàn)簡單的字符發(fā)送和接受,其他主流網(wǎng)絡(luò)聊天程序無論在怎么變,也無法擺脫這個雛形。</p><p><b> 三.設(shè)計原
9、理:</b></p><p> 1. TCP/IP協(xié)議 </p><p> TCP/IP(傳輸控制協(xié)議/網(wǎng)際協(xié)議)是互聯(lián)網(wǎng)中的基本通信語言或協(xié)議。在私網(wǎng)中,它也被用作通信協(xié)議。當你直接網(wǎng)絡(luò)連接時,你的計算機應(yīng)提供一個TCP/IP程序的副本,此時接收你所發(fā)送的信息的計算機也應(yīng)有一個TCP/IP程序的副本。 </p><p> TCP/IP是一個兩層的
10、程序。高層為傳輸控制協(xié)議,它負責(zé)聚集信息或把文件拆分成更小的包。這些包通過網(wǎng)絡(luò)傳送到接收端的TCP層,接收端的TCP層把包還原為原始文件。低層是網(wǎng)際協(xié)議,它處理每個包的地址部分,使這些包正確的到達目的地。網(wǎng)絡(luò)上的網(wǎng)關(guān)計算機根據(jù)信息的地址來進行路由選擇。即使來自同一文件的分包路由也有可能不同,但最后會在目的地匯合。 TCP/IP使用客戶端/服務(wù)器模式進行通信。TCP/IP通信是點對點的,意思是通信是網(wǎng)絡(luò)中的一臺主機與另一臺主機之間的。TC
11、P/IP與上層應(yīng)用程序之間可以說是“沒有國籍的”,因為每個客戶請求都被看做是與上一個請求無關(guān)的。正是它們之間的“無國籍的”釋放了網(wǎng)絡(luò)路徑,才是每個人都可以連續(xù)不斷的使用網(wǎng)絡(luò)。 許多用戶熟悉使用TCP/IP協(xié)議的高層應(yīng)用協(xié)議。包括萬維網(wǎng)的超文本傳輸協(xié)議(HTTP),文件傳輸協(xié)議(FTP),遠程網(wǎng)絡(luò)訪問協(xié)議(Telnet)和簡單郵件傳輸協(xié)議(SMTP)。這些協(xié)議通常和TCP/IP協(xié)議打包在一起。 使用模擬電話調(diào)制解調(diào)器連接網(wǎng)絡(luò)的個人電腦通常
12、是使用串行線路接口協(xié)議(SLIP)和點對點協(xié)議(P2P)。這些協(xié)議壓縮IP包后通過撥號電話線發(fā)送</p><p> 2.socket協(xié)議</p><p> (1).什么是socket</p><p> Socket,簡稱套接字,用于實現(xiàn)網(wǎng)絡(luò)上客戶和服務(wù)器之間的連接。也就是說網(wǎng)絡(luò)上兩個或兩個以上雙工方式通信的進程之間總有一個連接,這個連接的端點成為套接字,套接字
13、是在比較低的層次上通信的。</p><p> 具體的說:一個服務(wù)器應(yīng)用程序一般偵聽一個特定的端口等待客戶端的連接請求,當一個連接請求到達時,客戶端和服武器端建立一個通信連接,在連接過程中,客戶端被分配一個本地端口與一個socket建立連接,客戶端通過寫socket來通知服務(wù)器,以讀socket中的信息,類似的服務(wù)器也獲得一個本地端口,它需要一個新的端口號來偵聽原始端口上的其他連接請求。服務(wù)器也通過它的本地端口連
14、接一個socket,通過讀寫和客戶端通信。</p><p> (2).Socket程序的工作過程:</p><p> 1、建立Socket連接:在通信開始之前由通信雙方確認身份,建立一條專用的虛擬連接通道。</p><p> 2、數(shù)據(jù)通信:利用虛擬連接通道傳送數(shù)據(jù)信息進行通道。</p><p> 3、關(guān)閉:通信結(jié)束時,再將所建的虛擬連
15、接拆除。</p><p><b> 具體如下:</b></p><p><b> 服務(wù)器</b></p><p><b> 三次握手:</b></p><p> 第一次握手:原主機發(fā)送一個帶有本次連接的序號的請求的一個數(shù)據(jù)幀</p><p>
16、第二次握手:目的主機收到請求后,如果同意連接,則發(fā)回一個帶有一個本次連接序號和源端機連接序列號的確認。</p><p> 第三此握手:源端機收到含有兩次初始序列號的應(yīng)答后,在向目的主機發(fā)送一個帶有兩次連接的序列號的確認。</p><p><b> 具體過程如下:</b></p><p> (3).如何開發(fā)一個Server-Client模型
17、的程序</p><p><b> 開發(fā)原理: </b></p><p> 服務(wù)器端,使用ServerSocket監(jiān)聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請求,客戶連接后,會話產(chǎn)生;在完成會話后,關(guān)閉連接。 </p><p> 客
18、戶端,使用Socket對網(wǎng)絡(luò)上某一個服務(wù)器的某一個端口發(fā)出連接請求,一旦連接成功,打開會話;會話完成后,關(guān)閉Socket??蛻舳瞬恍枰付ù蜷_的端口,通常臨時的、動態(tài)的分配一個1024以上的端口。 </p><p> Socket接口是TCP/IP網(wǎng)絡(luò)的API,Socket接口定義了許多函數(shù)或例程,程序員可以用它們來開發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序。要學(xué)Internet上的TCP/IP網(wǎng)絡(luò)編程,必須理解Sock
19、et接口。 Socket接口設(shè)計者最先是將接口放在Unix操作系統(tǒng)里面的。如果了解Unix系統(tǒng)的輸入和輸出的話,就很容易了解Socket了。網(wǎng)絡(luò)的Socket數(shù)據(jù)傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個類似于打開文件的函數(shù)調(diào)用Socket(),該函數(shù)返回一個整型的Socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該Socket實現(xiàn)的。</p><p><b>
20、; 3. Java</b></p><p> Java,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計語言和Java平臺的總稱。用Java實現(xiàn)的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺、動態(tài)的Web、Internet計算。從此,Java被廣泛接受并推動了Web的迅速發(fā)展,常用的瀏覽器現(xiàn)在均支持Java applet。</p
21、><p> (1)java平臺構(gòu)架</p><p> Java平臺由Java虛擬機(Java Virtual Machine)和Java 應(yīng)用編程接口(Application Programming Interface、簡稱API)構(gòu)成。Java 應(yīng)用編程接口為Java應(yīng)用提供了一個獨立于操作系統(tǒng)的標準接口,可分為基本部分和擴展部分。在硬件或操作系統(tǒng)平臺上安裝一個Java平臺之后,Java
22、應(yīng)用程序就可運行。現(xiàn)在Java平臺已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運行。Java應(yīng)用編程接口已經(jīng)從1.1x版發(fā)展到1.2版。目前常用的Java平臺基于Java1.5,最近版本為Java1.7。 </p><p> Java分為三個體系JavaSE(Java2 Platform Standard Edition,java平臺標準版),JavaEE(Java 2 Pl
23、atform,Enterprise Edition,java平臺企業(yè)版),JavaME(Java 2 Platform Micro Edition,java平臺微型版)。 </p><p> * Java SE(Java Platform,Standard Edition)。Java SE 以前稱為 J2SE。它允許開發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)境和實時環(huán)境中使用的 Java 應(yīng)用程序。Java SE 包含
24、了支持 Java Web 服務(wù)開發(fā)的類,并為 Java Platform,Enterprise Edition(Java EE)提供基礎(chǔ)。 </p><p> * Java EE(Java Platform,Enterprise Edition)。這個版本以前稱為 J2EE。企業(yè)版本幫助開發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端 Java 應(yīng)用程序。Java EE 是在 Java SE 的基礎(chǔ)上構(gòu)建的,它提
25、供 Web 服務(wù)、組件模型、管理和通信 API,可以用來實現(xiàn)企業(yè)級的面向服務(wù)體系結(jié)構(gòu)(service-oriented architecture,SOA)和 Web 2.0 應(yīng)用程序。 </p><p> * Java ME(Java Platform,Micro Edition)。這個版本以前稱為 J2ME。Java ME 為在移動設(shè)備和嵌入式設(shè)備(比如手機、PDA、電視機頂盒和打印機)上運行的應(yīng)用程序提供一
26、個健壯且靈活的環(huán)境。Java ME 包括靈活的用戶界面、健壯的安全模型、許多內(nèi)置的網(wǎng)絡(luò)協(xié)議以及對可以動態(tài)下載的連網(wǎng)和離線應(yīng)用程序的豐富支持?;?Java ME 規(guī)范的應(yīng)用程序只需編寫一次,就可以用于許多設(shè)備,而且可以利用每個設(shè)備的本機功能。</p><p> (2)Java與C/C++的差異 </p><p> 熟悉C語言和C++語言的讀者一定想搞清楚這個問題,實際上,Java確實是
27、從C語言和C++語言繼承了許多成份,甚至可以將Java看成是類C語言發(fā)展和衍生的產(chǎn)物。比如Java語言的變量聲明,操作符形式,參數(shù)傳遞,流程控制等方面和C語言,C++語言完全相同。盡管如此,Java和C語言,C++語言又有許多差別,主要表現(xiàn)在如下幾個方面: </p><p> (1) Java中對內(nèi)存的分配是動態(tài)的,它采用面向?qū)ο蟮臋C制,采用運算符new為每個對象分配內(nèi)存空間,而且,實際內(nèi)存還會隨程序運行情況而
28、改變。程序運行中,每個, Java系統(tǒng)自動對內(nèi)存進行掃描,對長期不用的空間作為”垃圾”進行收集,使得系統(tǒng)資源得到更充分地利用。按照這種機制,程序員不必關(guān)注內(nèi)存管理問題,這使Java程序的編寫變得簡單明了,并且避免了了由于內(nèi)存管理方面的差錯而導(dǎo)致系統(tǒng)出問題。而C語言通過malloc()和free()這兩個庫函數(shù)來分別實現(xiàn)分配內(nèi)在和釋放內(nèi)存空間的,C++語言中則通過運算符new和delete來分配和釋放內(nèi)存。在C和C++這仲機制中,程序員必
29、須非常仔細地處理內(nèi)存的使用問題。一方面,如果對己釋放的內(nèi)存再作釋放或者對未曾分配的內(nèi)存作釋放,都會造成死機;而另一方面,如果對長期不用的或不再使用的內(nèi)存不釋放,則會浪費系統(tǒng)資源,甚至因此造成資源枯竭.。</p><p> (2) Java不在所有類之外定義全局變量,而是在某個類中定義一種公用靜態(tài)的變量來完成全局變量的功能。</p><p> (3) Java不用goto語句,而是用tr
30、y-catch-finally異常處理語句來代替goto語句處理出錯的功能。</p><p> (4) Java不支持頭文件,而C和C++語言中都用頭文件來定義類的原型,全局變量,庫函數(shù)等,這種采用頭文件的結(jié)構(gòu)使得系統(tǒng)的運行維護相當繁雜。</p><p> (5) Java不支持宏定義,而是使用關(guān)鍵字final來定義常量,在C++中則采用宏定義來實現(xiàn)常量定義,這不利于程序的可讀性。&l
31、t;/p><p> (6) Java對每種數(shù)據(jù)類型都分配固定長度.比如,在Java中,int類型總是32位的,而在C和C++中,對于不同的平臺,同一個數(shù)據(jù)類型分配不同的字節(jié)數(shù),同樣是int類型,在PC機中為二字節(jié)即16位,而在VAX-11中,則為32位.這使得C語言造成不可移植性,而Java則具有跨平臺性(平臺無關(guān)性)。</p><p> (7) 類型轉(zhuǎn)換不同.在C和C++中,可通過指針進
32、行任意的類型轉(zhuǎn)換,常常帶來不安全性,而在Java中,運行時系統(tǒng)對對象的處理要進行類型相容性檢查,以防止不安全的轉(zhuǎn)換。</p><p> (8) 結(jié)構(gòu)和聯(lián)合的處理.在C和C++中,結(jié)構(gòu)和聯(lián)合的所有成員均為公有,這就帶來了安全性問題,而在Java中根本就不包含結(jié)構(gòu)和聯(lián)合,所有的內(nèi)容都封裝在類里面。 </p><p> (9) Java不再使用指針.指針是C和C++中最靈活,也最容易產(chǎn)生錯誤
33、的數(shù)據(jù)類型.由指針所進行的內(nèi)存地址操作常會造成不可預(yù)知的錯誤,同時通過指針對某個內(nèi)存地址進行顯式類型轉(zhuǎn)換后,可以訪問一個C++中的私有成員,從而破壞安全性。而Java對指針進行完全地控制,程序員不能直接進行任何指針操作。</p><p><b> 四.課題實現(xiàn)</b></p><p><b> 1.方案介紹</b></p>&l
34、t;p> 所謂socket通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄。應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。 </p><p> 以J2SDK-1.3為例,Socket和ServerSocket類庫位于java.net包中。ServerSocket用于服務(wù)器端,Socket是建立網(wǎng)絡(luò)連接時使用的。在連接成功時,應(yīng)用程序兩端
35、都會產(chǎn)生一個Socket實例,操作這個實例,完成所需的會話。對于一個網(wǎng)絡(luò)連接來說,套接字是平等的,并沒有差別,不因為在服務(wù)器端或在客戶端而產(chǎn)生不同級別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。 </p><p> .Accept方法用于產(chǎn)生"阻塞",直到接受到一個連接,并且返回一個客戶端的Socket對象實例。"阻塞&
36、quot;是一個術(shù)語,它使程序運行暫時"停留"在這個地方,直到一個會話產(chǎn)生,然后程序繼續(xù);通常"阻塞"是由循環(huán)產(chǎn)生的。 </p><p> getInputStream方法獲得網(wǎng)絡(luò)連接輸入,同時返回一個InputStream對象實例。 </p><p> getOutputStream方法連接的另一端將得到輸入,同時返回一個OutputStrea
37、m對象實例。 </p><p> 注意:其中g(shù)etInputStream和getOutputStream方法均會產(chǎn)生一個IOException,它必須被捕獲,因為它們返回的流對象,通常都會被另一個流對象使用。</p><p><b> 詳細原理圖如下:</b></p><p> 由圖可知,程序包括服務(wù)器端和客戶端。</p>
38、<p> 服務(wù)器,使用ServerSocket監(jiān)聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請求,客戶連接后,會話產(chǎn)生;在完成會話后,關(guān)閉連接。</p><p> 服務(wù)器端的程序界面如下: </p><p> 客戶端,使用Socket對網(wǎng)絡(luò)上某一個服務(wù)器的某一個端口發(fā)出
39、連接請求,一旦連接成功,打開會話;會話完成后,關(guān)閉Socket??蛻舳瞬恍枰付ù蜷_的端口,通常臨時的、動態(tài)的分配一個8000口。 </p><p> 客戶端的程序界面如下:</p><p><b> 2.局域網(wǎng)的構(gòu)建</b></p><p> ?。?)計算機的名字 </p><p> 1. 在計算機的桌面上,右鍵
40、單擊“網(wǎng)上鄰居”。 </p><p> 2. 選擇“屬性”。 </p><p> 3. 單擊“標識”選項卡。 </p><p> 4. 在“計算機名稱”框中可以找到計算機的名稱。 </p><p> ?。?)計算機的 IP地址</p><p> 1. 單擊“任務(wù)條”上的“啟動”。 </p><
41、;p> 2. 選擇“運行”。 </p><p> 3. 若服務(wù)器端操作系統(tǒng)為win95則在“打開”中填入“winipcfg”,若服務(wù)器端操作系統(tǒng)為winnt則在“打開”中填入“ipconfig”。 </p><p> 4. 按下“確定”鍵。 上面找到的計算機名稱或IP地址可以作為WinSock的RemoteHost 屬性的值。</p><p><b
42、> 五.實現(xiàn)結(jié)果:</b></p><p> 程序運行之前,我們必須知道服務(wù)器端主機所在網(wǎng)絡(luò)的地址,我們學(xué)校大多數(shù)電腦使用使用的IP地址都是被隨機分配的,每次連接重新建立后,IP地址都可能不同,因此我們要查看服務(wù)器的本地IP地址。查看方式是在CMD界面中輸入ipconfig再回車,響應(yīng)為無線網(wǎng)絡(luò)的IP地址為172.17.32.9,子網(wǎng)掩碼為255.255.240.0,默認網(wǎng)關(guān)為 58.
43、45.112.1,我們將得到的IP改寫入客戶端的相應(yīng)地方即可,打開程序后,服務(wù)器則處于監(jiān)聽狀態(tài),這時我們只要往客戶端發(fā)送端填入要發(fā)送的字符,再按發(fā)送鍵即可。演示效果如下圖所示。</p><p> 六.總結(jié)及心得體會:</p><p> 一個星期下來,把以前分散學(xué)習(xí)的計算機網(wǎng)絡(luò)技術(shù)知識點系統(tǒng)地復(fù)習(xí)與應(yīng)用了一遍,并且能具體的用到了簡單的網(wǎng)絡(luò)連接的實際問題中去,順利地完成該課程設(shè)計,收獲頗多
44、。</p><p> 通過該課程設(shè)計,理解了Socket的基本概念工作原理,掌握Socket的建立、監(jiān)聽、連接、發(fā)送數(shù)據(jù)和接收數(shù)據(jù),對課本上的知識有了更深的理解,課本上的知識是機械的,表面的。通過實踐,上機實驗,和同學(xué)一起探討問題,才在實驗原理與作用上得到更多的體現(xiàn)。使用Java高級面向?qū)ο缶幊陶Z言編寫了一個網(wǎng)絡(luò)聊天程序。點對點通信在計算機上得到了實現(xiàn)。 </p><p> 計算機網(wǎng)
45、絡(luò)技術(shù)是一門實踐性和綜合性比較強的課程,平時的具體實踐時間與鍛煉機會太少,所以造成在課程設(shè)計中就出現(xiàn)了很多問題,但只要認真去實踐,依然會從中得到很大的收獲,問題就會迎刃而解的了。</p><p><b> 七.參考書目:</b></p><p> 1.謝希仁 編著 《計算機網(wǎng)絡(luò)(第五版)》 電子工業(yè)出版社 </p><p> 2.印雯
46、 編著 《Java語言與面向?qū)ο蟪绦蛟O(shè)計》 清華大學(xué)出版社</p><p><b> 附一課題源代碼:</b></p><p><b> 服務(wù)器端代碼</b></p><p><b> /**</b></p><p><b> *服務(wù)器端</b>
47、</p><p><b> */</b></p><p> package QQ.Com;</p><p> import javax.swing.*;</p><p> import java.net.*;</p><p> import java.awt.event.ActionEv
48、ent;</p><p> import java.awt.event.ActionListener;</p><p> import java.io.*;</p><p> implements AcionListener</p><p> public class MyServer extends JFrame implement
49、s ActionListener{</p><p> JTextArea jta=null;</p><p> JTextField jtf=null;</p><p> JButton jb=null;</p><p> JScrollPane jsp=null;</p><p> JPanel jp1=n
50、ull;</p><p> PrintWriter pw=null;</p><p> public static void main(String[] args)</p><p><b> {</b></p><p> MyServer msv=new MyServer();</p><p&
51、gt;<b> }</b></p><p> public MyServer()</p><p><b> {</b></p><p> jta=new JTextArea();</p><p> jtf=new JTextField(20);</p><p>
52、jsp=new JScrollPane(jta);</p><p> jb=new JButton("發(fā)送");</p><p> jb.addActionListener(this);</p><p> jp1=new JPanel();</p><p> this.add(jsp,"Center&qu
53、ot;);</p><p> jp1.add(jtf);</p><p> jp1.add(jb);</p><p> this.add(jp1,"South");</p><p> this.setTitle("QQ簡易聊天(服務(wù)器端)");</p><p> thi
54、s.setSize(400, 300);</p><p> this.setVisible(true);</p><p><b> try{</b></p><p> ServerSocket ss=new ServerSocket(8000);////服務(wù)器監(jiān)聽</p><p> Socket s=ss.ac
55、cept();</p><p> InputStreamReader isr=new InputStreamReader(s.getInputStream());</p><p> BufferedReader br=new BufferedReader(isr);</p><p> pw=new PrintWriter(s.getOutputStream()
56、,true);</p><p> while(true)</p><p><b> {</b></p><p> String info=br.readLine();//讀取信息</p><p> jta.append("客戶端對服務(wù)器說:"+info+"\r\n");&l
57、t;/p><p><b> }</b></p><p> }catch(Exception e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></
58、p><p> public void actionPerformed(ActionEvent e) {//如果按下發(fā)送按鈕</p><p> // TODO Auto-generated method stub</p><p> if(e.getSource()==jb)</p><p><b> {</b><
59、/p><p> String info=jtf.getText();</p><p> jta.append("服務(wù)器對客戶端說:"+info+"\r\n");</p><p> pw.println(info);</p><p> jtf.setText("");//清空發(fā)送文
60、本框</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 客戶端代碼</b></p><p><b> /**</b&
61、gt;</p><p><b> *服務(wù)器端</b></p><p><b> */</b></p><p> package QQ.Com;</p><p> import javax.swing.*;</p><p> import java.net.*;<
62、;/p><p> import java.awt.event.ActionEvent;</p><p> import java.awt.event.ActionListener;</p><p> import java.io.*;</p><p> public class MyClient extends JFrame implem
63、ents ActionListener {</p><p> JTextArea jta=null;</p><p> JTextField jtf=null;</p><p> JButton jb=null;</p><p> JScrollPane jsp=null;</p><p> JPanel j
64、p1=null;</p><p> PrintWriter pw=null;</p><p> public static void main(String[] args)</p><p><b> {</b></p><p> MyClient mct=new MyClient();</p>&l
65、t;p><b> }</b></p><p> public MyClient()</p><p><b> {</b></p><p> jta=new JTextArea();</p><p> jtf=new JTextField(20);</p><p&g
66、t; jsp=new JScrollPane(jta);</p><p> jb=new JButton("發(fā)送");</p><p> jb.addActionListener(this);</p><p> jp1=new JPanel();</p><p> this.add(jsp,"Cente
67、r");</p><p> jp1.add(jtf);</p><p> jp1.add(jb);</p><p> this.add(jp1,"South");</p><p> this.setTitle("QQ簡易聊天(客戶端)");</p><p>
68、this.setSize(400, 300);</p><p> this.setVisible(true);</p><p><b> try{</b></p><p> Socket s=new Socket("172.17.32.9",8000);</p><p> InputStrea
69、mReader isr=new InputStreamReader(s.getInputStream());</p><p> BufferedReader br=new BufferedReader(isr);</p><p> pw=new PrintWriter(s.getOutputStream(),true);</p><p> while(true
70、)</p><p><b> {</b></p><p> String info=br.readLine();//讀取從服務(wù)器發(fā)來的信息</p><p> jta.append("服務(wù)器對客戶端說:"+info+"\r\n");</p><p><b> }&l
71、t;/b></p><p> }catch(Exception e){</p><p> e.printStackTrace();</p><p><b> }</b></p><p><b> }</b></p><p> public void act
72、ionPerformed(ActionEvent e) {</p><p> // TODO Auto-generated method stub</p><p> if(e.getSource()==jb)</p><p><b> {</b></p><p> String info=jtf.getText(
73、);</p><p> jta.append("客戶端對服務(wù)器說:"+info+"\r\n");</p><p> pw.println(info);</p><p><b> }</b></p><p><b> }</b></p>&
74、lt;p><b> }</b></p><p> 附二網(wǎng)線水晶頭的解法:</p><p> 網(wǎng)線水晶頭一般說來有兩種做法標準,這兩種標準分別為 TIA/EIA 568B 和 TIA/EIA 568A 電腦自動關(guān)機。制作水晶頭首先將水晶頭有卡的一面向下,有銅片的一面朝上,有開口的一方朝向自己身體,從
75、左至右排序為 12345678 ,我們學(xué)習(xí)的是是 TIA/EIA 568B 網(wǎng)線線序:TIA/EIA-568B: 1、白橙,2、橙,3、白綠,4、藍,5、白藍,6、綠,7、白棕,8、棕。</p><p> 在整個網(wǎng)絡(luò)布線中應(yīng)用一種布線方式,但兩端都有RJ-45 plug 的網(wǎng)絡(luò)聯(lián)線無論是采用端接方式A,還是端接方式B, 在
76、網(wǎng)絡(luò)中都是通用的。雙絞線的順序與RJ45頭的引腳序號--對應(yīng)。</p><p> 10M 以太網(wǎng)的網(wǎng)線接法使用1,2,3,6編號的芯線傳遞數(shù)據(jù),100M以太網(wǎng)的網(wǎng)線使用4,5,7,8編號的芯線傳遞數(shù)據(jù)。為何現(xiàn)在都采用4對(8芯線)的雙 絞線呢?這主要是為適應(yīng)更多的使用范圍,在不變換基礎(chǔ)設(shè)施的前提下,就可滿足各式各樣的用戶設(shè)備的網(wǎng)線接線要求電腦配置。例如,我們可同時用其中一對絞線來實現(xiàn)語音通訊。 <
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計--基于tcp的計算機通信工具編程實現(xiàn)
- 課程設(shè)計--基于tcp的計算機通信工具編程實現(xiàn)
- 課程設(shè)計---通信系統(tǒng)的計算機仿真設(shè)計
- 校園計算機通信網(wǎng)課程設(shè)計
- 課程設(shè)計---遠程登錄的計算機實現(xiàn)
- 計算機組成原理課程設(shè)計-- 模型計算機的設(shè)計與實現(xiàn)
- 利用socket實現(xiàn)雙機通信(計算機網(wǎng)絡(luò)課程設(shè)計)
- 計算機組成原理課程設(shè)計——模型計算機的設(shè)計與實現(xiàn)
- 數(shù)字通信計算機仿真課程設(shè)計報告
- 計算機原理課程設(shè)計
- 計算機課程設(shè)計
- 計算機網(wǎng)絡(luò)與通信課程設(shè)計
- 計算機組成原理課程設(shè)計---簡單計算機系統(tǒng)設(shè)計與實現(xiàn)
- 計算機組成原理課程設(shè)計--簡單計算機系統(tǒng)設(shè)計與實現(xiàn)
- 計算機組成原理課程設(shè)計---簡單計算機系統(tǒng)設(shè)計與實現(xiàn)
- 計算機組成原理課程設(shè)計--簡單計算機的設(shè)計
- 計算機硬件課程設(shè)計報告---簡單計算機的設(shè)計
- 《計算機原理》網(wǎng)絡(luò)課程設(shè)計與實現(xiàn).pdf
- 計算機組成原理課程設(shè)計---簡單計算機的設(shè)計
- 潮流計算的計算機算法課程設(shè)計
評論
0/150
提交評論