聊天程序java_第1頁
聊天程序java_第2頁
聊天程序java_第3頁
聊天程序java_第4頁
聊天程序java_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、塔里木大學(xué)信息工程學(xué)院課程設(shè)計目錄前言- 1 -工程概況- 1 -正文- 1 -2.1課程任務(wù)及要求- 1 -2.2選題意義- 2 -2.3 程序需求分析- 2 -2.3.1可行性分析- 2 -2.3.2 服務(wù)器端- 2 -2.3.3 客戶端- 3 -2.4 算法設(shè)計- 3 -2.4.1 UML圖如下:- 3 -2.4.2 C/S模式套接字的連接- 4 -2.4.3 文字聊天的實現(xiàn)- 4 -2.5 程序設(shè)計與實現(xiàn)- 5 -2.5.1建立連接- 5 -2.5.2斷開連接- 5 -2.5.3 C/S模式套接字的連接- 6 -2.6程序測試與分析- 8 -2.6.1啟動服務(wù)器- 8 -2.6.2啟動

2、客戶端- 8 -2.6.3成功啟動客戶端- 8 -2.6.4聊天過程- 9 -2.6.5 斷開連接- 9 -2.7課程設(shè)計小結(jié)- 10 -參考文獻(xiàn)- 10 -課程設(shè)計總結(jié)- 11 -致謝- 12 -附錄- 13 -前言JAVA程序設(shè)計教程是一門實踐性很強的計算機(jī)專業(yè)基礎(chǔ)課程,課程設(shè)計是學(xué)習(xí)完該課程后進(jìn)行的一次較全面的綜合練習(xí)。其目的在于通過實踐加深學(xué)生對面向?qū)ο蟪绦蛟O(shè)計的理論、方法和基礎(chǔ)知識的理解,掌握使用Java語言進(jìn)行面向?qū)ο笤O(shè)計的基本方法,提高運用面向?qū)ο笾R分析實際問題、解決實際問題的能力。Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,是由Sun Microsystem

3、s公司于1995年5月推出的Java程序設(shè)計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計算機(jī)、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。 工程概況一般來說,聊天工具大多數(shù)由客戶端和服務(wù)器程序外加服務(wù)器端用于存放客戶數(shù)據(jù)的數(shù)據(jù)庫組成,本系統(tǒng)采用客戶機(jī)/服務(wù)器架構(gòu)模式通過Java提供的Socket類來鏈接客戶機(jī)和服務(wù)器并使客戶機(jī)和服務(wù)器之間相互通信,由于聊天是多點的,而Ja

4、va提供的多線程功能用多線程可完成多點的聊天。本系統(tǒng)建立在JAVA平臺上,系統(tǒng)的設(shè)計使用了面向?qū)ο蠹夹g(shù)和面向?qū)ο蟮脑O(shè)計原則。使用JAVA語言編寫,開發(fā)工具采用Eclipse。服務(wù)器設(shè)計與實現(xiàn)過程中,采用了多線程技術(shù),可以在單個程序中同時運用多個不同的線程,執(zhí)行不同的任務(wù)。大大增強了程序?qū)Ψ?wù)器資源的利用,正文2.1課程任務(wù)及要求課程設(shè)計可選用Eclipse等作為開發(fā)平臺以提高開發(fā)效率,盡可能熟練掌握其中一種集成開發(fā)環(huán)境。建議采用UML建模技術(shù)進(jìn)行系統(tǒng)的分析設(shè)計,在Visio中畫出系統(tǒng)用例圖和類圖,并將UML圖復(fù)制到設(shè)計報告中。通過這次設(shè)計,要求掌握以下內(nèi)容:1)面向?qū)ο蠹夹g(shù)中的繼承與多態(tài)(重載

5、和覆蓋)機(jī)制、各種修飾符的使用2)類、包、接口的定義與使用3)常用工具類與算法的實現(xiàn)(數(shù)組、向量、字符串、鏈表)4)Java常用標(biāo)準(zhǔn)GUI組件及其事件處理5)Java的異常處理機(jī)制6)Java的數(shù)據(jù)庫連接技術(shù)7)Java的多線程技術(shù)8)Java的網(wǎng)絡(luò)編程課程設(shè)計選題:局域網(wǎng)聊天程序的設(shè)計與實現(xiàn)開發(fā)工具:Eclipse2.2選題意義局域網(wǎng)聊天軟件,除了能加強網(wǎng)絡(luò)之間的信息溝通外,最主要的是可以將網(wǎng)站信息與聊天用戶緊密聯(lián)系在一起。通過網(wǎng)站信息向聊天用戶群及時群發(fā)送,可以迅速吸引聊天用戶群對網(wǎng)站的關(guān)注,從而加強網(wǎng)站的訪問率與回頭率。局域網(wǎng)聊天軟件利用的是互聯(lián)網(wǎng)線路,通過文字、語音、視頻、文件的信息交

6、流與互動,有效節(jié)省了溝通雙方的時間與經(jīng)濟(jì)成本;局域網(wǎng)聊天軟件不但成為人們的溝通工具,還成為了人們利用其進(jìn)行電子商務(wù)、工作、學(xué)習(xí)等交流的平臺,將日常辦公的傳統(tǒng)溝通方式替換,有效的減少辦公費用的同時,較之更有效率百分之一。2.3 程序需求分析2.3.1可行性分析經(jīng)濟(jì)可行性:由于本系統(tǒng)的主要背景是課程設(shè)計,不注重直接的經(jīng)濟(jì)效益和其后的發(fā)展方向,只在注重自身水平和能力的提高,對自身的經(jīng)濟(jì)要求也不高,只要有一臺能運行Java軟件的電腦便可,所以不用考慮到經(jīng)濟(jì)問題。技術(shù)可行性:本系統(tǒng)使用Java作為系統(tǒng)開發(fā)的開發(fā)環(huán)境,它提供完善的指令控制語句、類與對象的支持及豐富的數(shù)據(jù)類型,給開發(fā)高性能系統(tǒng)提供的保障為開

7、發(fā)滿足客戶要求的系統(tǒng),保證了代碼的模塊化要求,而代碼模塊化的提高,非常有利于以后對新系統(tǒng)的擴(kuò)展與修改。運行可行性: 本系統(tǒng)為一個小型的局域網(wǎng)聊天系統(tǒng),所耗費的資源非常的小,現(xiàn)在一般的電腦無論是硬件還是軟件都能夠滿足條件,因此,本系統(tǒng)在運行上是可行的。綜上所述,本系統(tǒng)的設(shè)計與開發(fā)在技術(shù)上和硬件設(shè)備上的條件都是滿足的,因此,它在技術(shù)上是可行的。2.3.2 服務(wù)器端服務(wù)器端主要是為各個客戶端建立相互的聯(lián)系。在服務(wù)器端建立起來后,客戶端可以通過搜尋服務(wù)器端的IP地址和服務(wù)器端的端口地址和服務(wù)器建立聯(lián)系。在服務(wù)器啟動的過程中,服務(wù)器會在該主機(jī)上監(jiān)聽一個網(wǎng)絡(luò)端口專門為該程序服務(wù),不斷監(jiān)聽是否有客戶端通過這

8、個端口請求與服務(wù)器建立聯(lián)系。在建立聯(lián)系的過程中,需要客戶端輸入自己的昵稱,服務(wù)器端會自動檢測是否出現(xiàn)客戶端重名的情況;然后在客戶端輸入服務(wù)器端的IP地址和該地址的主機(jī)端口。各個客戶端在齊界面中輸入聊天內(nèi)容,通過服務(wù)器的轉(zhuǎn)發(fā),其他各個客戶端都可以收到該客戶端的信息;當(dāng)客戶端關(guān)閉時,服務(wù)器端會提示客戶端退出。在服務(wù)器端要實現(xiàn)的功能:1)建立專用的網(wǎng)絡(luò)端口;2)不斷的監(jiān)聽建立的端口;3)與客戶端建立聯(lián)系;4)與客戶端建立輸入輸出流管道;5)可以與客戶端互相發(fā)送信息;6)處理用戶注冊;7)處理用戶退出;2.3.3 客戶端客戶端是為每一個用戶建立一個聊天的界面,單獨的客戶端是無法運行的,必須與服務(wù)器端建

9、立聯(lián)系,客戶端才能正常使用。在與服務(wù)器端建立聯(lián)系的時候,需要輸入客戶端的昵稱(用于區(qū)別各個用戶),服務(wù)器端的IP地址,和該地址下的服務(wù)器端的端口,只有服務(wù)器端確認(rèn)了客戶端的連接并且顯示正常,客戶端才能與服務(wù)器端進(jìn)行信息交互;在連接成功后,用戶可以直接在客戶界面直接輸入消息,通過服務(wù)器把消息發(fā)送到其他客戶端;如果服務(wù)器端關(guān)閉,客戶端在發(fā)送消息時,會提示“服務(wù)器已關(guān)閉,發(fā)送失敗”;當(dāng)客戶端退出時,會提示服務(wù)器端本客戶端已退出。在客戶端需要實現(xiàn)的功能:1)可以輸入服務(wù)器端的IP地址以及對應(yīng)端口;2)可以與服務(wù)器端進(jìn)行信息交互;3)與服務(wù)器端建立輸入輸出流管道。2.4 算法設(shè)計2.4.1 UML圖如下

10、:下圖(圖一)為局域網(wǎng)聊天系統(tǒng)的總體結(jié)構(gòu),已經(jīng)大概的把服務(wù)器端和客戶端所要實現(xiàn)的功能都體現(xiàn)了出來。服務(wù)器端的主要功能是:啟動服務(wù)器,停止服務(wù)器,發(fā)送信息,接收信息??蛻舳说闹饕δ苁牵航⑦B接,斷開連接,發(fā)送信息,接收信息。圖一 系統(tǒng)總體結(jié)構(gòu)2.4.2 C/S模式套接字的連接在系統(tǒng)實現(xiàn)信息傳輸時,服務(wù)器端和客戶端通過輸入輸出流套接實現(xiàn),在客戶端建立輸入流和輸出流管道,在服務(wù)器端也建立相應(yīng)的輸入輸出流管道,這樣就可以通過JAVA軟件實現(xiàn)文字信息交互。通過這種C/S模式,可以很好的提高系統(tǒng)的各項性能。2.4.3 文字聊天的實現(xiàn)在系統(tǒng)實現(xiàn)文字聊天時,首先,服務(wù)器啟動,并監(jiān)測分配的主機(jī)端口號;客戶端在

11、啟動時,會提示用戶輸入服務(wù)器端的IP地址和固定端口,只有兩者都輸入正確,客戶端與服務(wù)器端才能正確連接;在客戶端輸入信息后,通過C/S模式的套接字連接方法實現(xiàn)文字聊天。2.5 程序設(shè)計與實現(xiàn)2.5.1建立連接建立連接前,需要先啟動服務(wù)器端,使服務(wù)器端對分配的固定端口進(jìn)行循環(huán)監(jiān)聽;客戶端啟動時,要手動輸入服務(wù)器端的IP地址和對應(yīng)的固定端口,輸入正確后才能建立連接;流程圖如下(圖二):服務(wù)器端客戶端開啟服務(wù),等待連接連接成功,可以通訊建立連接圖二 連接示意圖主要代碼如下:(1) 服務(wù)器端 public class ChatServer:i. 啟動服務(wù)器 public void start()ss =

12、 new ServerSocket(6543);onStart = true;System.out.println("服務(wù)器已成功啟動!");ii. 客戶端連接 public void start()while(onStart) Socket s = ss.accept();Client c = new Client(s);clients.add(c);new Thread(c).start();System.out.println("一個客戶端成功連接!");(2) 客戶端 public class ChatClient extends JFrame:

13、System.out.print("請輸入你的昵稱:");myName = scan.readLine();System.out.print("請輸入服務(wù)器的ip:(直接回車默認(rèn)本機(jī))");ip = scan.readLine();2.5.2斷開連接斷開連接有兩種方法:一是,客戶端正常退出,在服務(wù)器端會顯示客戶端退出;二是,服務(wù)器端可以主動關(guān)閉,客戶端不會立即顯示服務(wù)器關(guān)閉,會在客戶端發(fā)送下一條信息時提示用戶服務(wù)器端已經(jīng)關(guān)閉;服務(wù)器端的主動關(guān)閉是非法的,所以要盡量的避免服務(wù)器的主動關(guān)閉流程圖如下(圖三):斷開連接斷開服務(wù),連接斷開連接結(jié)束服務(wù)器端客戶端圖

14、三 斷開連接示意圖圖主要代碼如下:setText("服務(wù)器已斷開","System");try if(dos != null)dos.close();if(s != null)s.close(); catch(Exception e11) System.out.println("關(guān)閉連接出錯!");2.5.3 C/S模式套接字的連接信息的傳遞是通過客戶端與服務(wù)器端的輸入輸出流通道將信息通過TCP/IP協(xié)議打包傳輸,在客戶端輸入信息,通過JAVA的文字監(jiān)控,將信息打包,通過管道傳輸;在客戶端將信息發(fā)送出去后,服務(wù)器端會將信息發(fā)送至其他各

15、個客戶端;各個客戶端收到信息后,會在其界面顯示其他客戶端發(fā)送的信息,格式為“用戶名:信息”;流程圖如下(圖四):服務(wù)器端客戶端ServerSocket serverServer.accpet()等待客戶Socket client定義客戶端的套接字DataInputStreamDataOutputStreamDataInputStreamDataOutputStreamServer.close()關(guān)閉套接字連接Client.close()關(guān)閉套接字連接圖四 C/S模式套接主要代碼:i. 服務(wù)器端public Client(Socket s):public Client(Socket s) thi

16、s.s = s;try dis = new DataInputStream(s.getInputStream();dos = new DataOutputStream(s.getOutputStream();onConnect = true; catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();public void send(String str) try dos.writeUTF(str); catch (IOException e) / TODO Auto-generated catch b

17、locke.printStackTrace();ii. 客戶端public void setText(String str1,String str2):public void setText(String str1,String str2) String s = ""if(str2.equals("System") /如果是系統(tǒng)提示,則加上"系統(tǒng)提示:"s = textArea.getText();s += "系統(tǒng)提示:" + str1 + "rn"textArea.setText(s); el

18、se /其他的,什么都不加s = textArea.getText();s += str1 + "rn"textArea.setText(s); 2.6程序測試與分析2.6.1啟動服務(wù)器為了能夠?qū)崿F(xiàn)各個客戶端之間能夠?qū)崿F(xiàn)信息的交互,所以需要有服務(wù)器端作為信息的中轉(zhuǎn),同時,有了服務(wù)器的存在,也可以使得客戶端的數(shù)量大大增加,并且使得系統(tǒng)等性能大幅度提高;實際測試結(jié)果如下圖(圖五):圖五 服務(wù)器啟動2.6.2啟動客戶端在啟動客戶端的時候,需要輸入用戶自己的昵稱,和服務(wù)器端的IP地址,服務(wù)器端的端口號在程序當(dāng)中就已經(jīng)實現(xiàn)了,所以不用輸入端口號;這個界面沒有做出圖形界面,只是需要在終

19、端窗口中輸入。實際測試結(jié)果如下(圖六):圖六 客戶端啟動2.6.3成功啟動客戶端在客戶端啟動時,如果輸入的服務(wù)器IP地址正確,客戶端的界面會跳出,而且服務(wù)器端也會提示有新的客戶端成功連接;當(dāng)顯示客戶端成功連接后,客戶端才能與服務(wù)器端正常的進(jìn)行信息交互。實際測試結(jié)果如下(圖七)圖七 客戶服務(wù)器成功連接2.6.4聊天過程在聊天過程中,用戶只要在客戶端輸入信息,點擊發(fā)送,信息就會通過客戶端與服務(wù)器端之間的輸入輸出流通道發(fā)送至服務(wù)器端,然后由服務(wù)器端發(fā)送至其余的各個客戶端。在發(fā)送信息的過程中,每個客戶端都會顯示這條信息是哪一個客戶端發(fā)送的,經(jīng)過測試,延遲很低,即時性很好。實際的測試結(jié)果如下圖(圖八):

20、圖八 聊天過程2.6.5 斷開連接服務(wù)器端與客戶端之間斷開連接有兩種方式:一是客戶端主動關(guān)閉,服務(wù)器端會顯示“一個客戶端已退出”,這樣退出不會引起其他客戶端的正常聊天;二是服務(wù)器端主動關(guān)閉,這時,客戶端不會顯示服務(wù)器端關(guān)閉,只有在客戶端發(fā)送下一條信息時,系統(tǒng)才會提示服務(wù)器端已經(jīng)關(guān)閉,這種斷開連接的方式需要盡量的避免,因為一旦服務(wù)器端關(guān)閉,各個客戶端就不能繼續(xù)進(jìn)行信息交互。這種斷開連接的方式是非法的。實際的測試結(jié)果如下圖(圖九):圖九 客戶服務(wù)器斷開連接2.7課程設(shè)計小結(jié)通過這個聊天系統(tǒng)的設(shè)計,雖然很努力的去做,但是還是有些地方做的不好;例如:沒有把客戶端啟動時輸入昵稱和服務(wù)器端IP地址的界面做

21、成用戶圖形界面,使得系統(tǒng)的美觀有所下降;另外,在服務(wù)器端主動退出時,客戶端不能及時的檢測到服務(wù)器端的關(guān)閉,需要在發(fā)送下一條信息時才能檢測到;這使得客戶端一直處在阻塞狀態(tài)。這個系統(tǒng)也有較多的亮點。例如:在建立服務(wù)器端的時候,不用建立與數(shù)據(jù)庫的聯(lián)系,使得服務(wù)器端的程序比較簡單,通用性也更強;系統(tǒng)采用C/S客戶服務(wù)器的模式,使得系統(tǒng)的吞吐量大大增加,同時,也可以接受更多的客戶端連接。參考文獻(xiàn)1 耿祥義JAVA大學(xué)實用教程實驗指導(dǎo).M.北京.電子工業(yè)出版社 20052 張廣彬,孟紅蕊,Java課程設(shè)計案例精編.M.北京.清華大學(xué)出版社 20073 黃曉東.Java課程設(shè)計案例精編(第一版).M.北京.

22、中國水利水電出版社 20044 黃明等,梁旭,周紹斌.Java課程設(shè)計.M.北京.電子工業(yè)出版社 20065 楊昭.二級Java語言程序設(shè)計教程.M.北京.中國水利水電出版社 20066 趙毅主.跨平臺程序設(shè)計語言Java.M.西安. 西安電子科技大學(xué)出版社20067王路群.Java高級程序設(shè)計.M.北京. 中國水利水電出版社 2006課程設(shè)計總結(jié)經(jīng)過這次課程設(shè)計,我對Java又有了一定地深入了解,這次我選的題目是局域網(wǎng)聊天程序的實現(xiàn),涉及的編程知識不是太多,主要就是Java網(wǎng)絡(luò)編程那一塊。一開始拿到這個題目,其實并不知道如何下手,因為以前并沒有做過此類的程序設(shè)計,對網(wǎng)絡(luò)編程這一塊的認(rèn)識也相對

23、較少。為了寫好程序,我開始去圖書館看相關(guān)的書籍,了解到利用套接字可以進(jìn)行網(wǎng)絡(luò)通訊相關(guān)的編程,知道了C/S模式下的局域網(wǎng)聊天程序的方式及其實現(xiàn)形式。知道了要建立網(wǎng)絡(luò)通訊連接,首先服務(wù)器要創(chuàng)建一個服務(wù)器的套接字,然后用accept()方法等待客戶端的連接,客戶端也創(chuàng)建一個客戶端套接字,并通過服務(wù)器的IP地址和端口號連接服務(wù)器,再建立連接之后,就要定義兩端的輸入輸出流,然后依據(jù)一定的協(xié)議進(jìn)行數(shù)據(jù)傳輸,最后要注意關(guān)閉各自的套接字。整個C/S模式的局域網(wǎng)通訊方式就是這樣。這次我寫的程序相對簡單,只實現(xiàn)了服務(wù)器和客戶端的連接通訊,老師也覺得這個程序太簡單了,確實簡單了些,不過我也嘗試過客戶端與客戶端的連接

24、,但是似乎線程這一塊的程序我并沒有寫好,總是報錯,于是我變舍棄了客戶端與客戶端連接的實現(xiàn),雖然課程設(shè)計結(jié)束了,但是我的Java之路還長,我會利用暑假時間好好補習(xí)一下,好好完善我的程序??偟膩碚f,這次課程設(shè)計的收獲還是很大的,尤其在網(wǎng)絡(luò)編程,和線程的使用這一塊,學(xué)到了很多,自己對Java的興趣也是越開越濃,希望在今后的學(xué)習(xí)中,自己能夠取得不斷的進(jìn)步,讓自己的大學(xué)變的充實而又精彩。致謝本課題在選題及進(jìn)行過程中得到高老師的悉心指導(dǎo)。過程中,高老師多次幫助我分析思路,開拓視角,在我遇到困難想放棄的時候給予我最大的支持和鼓勵。高老師嚴(yán)謹(jǐn)求實的治學(xué)態(tài)度,踏實堅韌的工作精神,將使我終生受益。再多華麗的言語也

25、顯蒼白。在此,謹(jǐn)向高老師致以誠摯的謝意和崇高的敬意。     感謝這一段時間來所有老師對我學(xué)習(xí)上的幫助和生活上的關(guān)懷,正是您們的辛勤工作,才使我得以順利地完成此次課程設(shè)計。濃濃師恩,終生不忘。     感謝班級里的所有同學(xué),正是有你們的幫助才能讓我更好的完成了此次課設(shè),有你們真好,一生的友誼,永不會忘。附錄1. 服務(wù)器代碼package com.chat;import .*;import java.util.Vector;import java.io.*;public class ChatServer Server

26、Socket ss = null;boolean onStart = false;Vector<Client> clients = new Vector<ChatServer.Client>();public static void main(String args) new ChatServer().start();public void start() try ss = new ServerSocket(6543);onStart = true;System.out.println("服務(wù)器已成功啟動!"); catch(BindExceptio

27、n e) System.out.println("端口使用中!"); catch (Exception e1) e1.printStackTrace();try while(onStart) Socket s = ss.accept();Client c = new Client(s);clients.add(c);new Thread(c).start();System.out.println("一個客戶端成功連接!"); catch(Exception e) try ss.close(); catch (IOException e1) / TODO

28、Auto-generated catch blocke1.printStackTrace();e.printStackTrace();class Client implements Runnable private Socket s = null;private DataInputStream dis = null;private boolean onConnect = false;private DataOutputStream dos = null;public Client(Socket s) this.s = s;try dis = new DataInputStream(s.getI

29、nputStream();dos = new DataOutputStream(s.getOutputStream();onConnect = true; catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();public void send(String str) try dos.writeUTF(str); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();Overridepublic void

30、run() / TODO Auto-generated method stubString str = ""while(onConnect) try str = dis.readUTF();System.out.println(str);for(int i = 0;i < clients.size();i +) Client c = clients.get(i);if(c.onConnect = false) clients.remove(c); else if(c != this) c.send(str);System.out.println("a mas

31、sage is sended!"); catch (SocketException e) / TODO Auto-generated catch blockSystem.out.println("一個客戶端已退出!");onConnect = false;/e.printStackTrace(); catch (Exception e) try if(dis != null) dis.close();dis = null;if(dos != null) dos.close();dos = null;if(s != null) s.close();s = null;

32、 catch(Exception e1) System.out.println("關(guān)閉連接出錯!");/e.printStackTrace();2. 客戶端代碼package com.chat;import java.awt.*;import java.io.*;import .*;import javax.swing.*;import java.util.*;import java.awt.event.*;public class ChatClient extends JFrame TextArea textArea;TextField textField;JButton

33、 send_btn;JPanel intput_send_panel;String myName = "Chat-00"String ip = ""Socket s = null;DataOutputStream dos = null;DataInputStream dis = null;boolean onConnect = false;JPanel input_Name_Panel;TextField text_Name;JButton name_btn;public ChatClient() BufferedReader scan

34、 = new BufferedReader(new InputStreamReader(System.in);try System.out.print("請輸入你的昵稱:");myName = scan.readLine();System.out.print("請輸入服務(wù)器的ip:(直接回車默認(rèn)本機(jī))");ip = scan.readLine(); catch (IOException e2) / TODO Auto-generated catch blockSystem.out.println("輸入錯誤!"); finally t

35、ry scan.close();scan = null; catch (IOException e1) / TODO Auto-generated catch blocke1.printStackTrace();textArea = new TextArea();textField = new TextField(30);send_btn = new JButton("發(fā)送");send_btn.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e)

36、/ TODO Auto-generated method stubif(textField.getText().equals("") = false) try dos.writeUTF(textField.getText();setText(myName + ":" + textField.getText();/setText("發(fā)送成功","System"); catch(Exception e1) setText("服務(wù)器已斷開","System");try if(dos

37、 != null)dos.close();if(s != null)s.close(); catch(Exception e11) System.out.println("關(guān)閉連接出錯!"););textField.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(textField.getText().equals("") = false) try do

38、s.writeUTF(myName + ":" + textField.getText();setText(textField.getText();/setText("發(fā)送成功","System"); catch(Exception e1) setText("服務(wù)器已斷開","System");try if(dos != null)dos.close();if(s != null)s.close(); catch(Exception e11) System.out.println("關(guān)

39、閉連接出錯!"););textArea.setEditable(false);put_send_panel = new JPanel();put_send_panel.add(textField);put_send_panel.add(send_btn);this.add(textArea);this.add(put_send_panel,BorderLayout.SOUTH);this.setBounds(200, 200, 400, 300);this.setVisible(true);this.setTitle("在線聊天系統(tǒng) - " + myName);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.connect();public static

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論