




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 PAGE12 / NUMPAGES15華 東 交 通 大 學(xué)課 程 設(shè) 計(jì)( 論 文 )任 務(wù) 書信息學(xué)院 專 業(yè) 計(jì)算機(jī) 班 級(jí) 2009-2 一、課程設(shè)計(jì)(論文)題目 基于Winsock的簡(jiǎn)單聊天工具的設(shè)計(jì) 二、課程設(shè)計(jì)(論文)工作:自2011年6月20日起至2011年6月25日止。三、課程設(shè)計(jì)(論文)的容要求:1)基本要求: 1、分析Winsock的編程技術(shù),特別是Winsock使用 2、分析聊天程序的功能與其相關(guān)網(wǎng)絡(luò)協(xié)議 3、給出程序流程圖和設(shè)計(jì)方案 4、選擇開發(fā)環(huán)境,編譯源程序 5、給出軟件測(cè)試文檔 2)設(shè)計(jì)要求 1、資料提交形式:課程設(shè)計(jì)報(bào)告一份(按學(xué)校相關(guān)標(biāo)準(zhǔn)、紙質(zhì),且嚴(yán)格按照
2、給定模板來(lái)組織撰寫,特別是課設(shè)時(shí)間要對(duì)、簽名要手寫、封面一定要用學(xué)校買的)、電子文檔一份; 2、課程設(shè)計(jì)報(bào)告不少于3000字; 3、電子文檔中必須至少有5份參考資料,壓縮后以班為單位交電子版給老師,時(shí)間為第18周的周六。 4、成績(jī):出勤占10%、課程設(shè)計(jì)報(bào)告占40%、答辯占20%、參考資料占30%。 5、課程設(shè)計(jì)報(bào)告模板寫附錄。 3)工具要求: 1、界面清楚易懂; 2、程序?qū)哟谓Y(jié)構(gòu)清晰。 4)實(shí)驗(yàn)安排: 1、地點(diǎn):創(chuàng)新大樓東405 2、時(shí)間:周一、三、四上午8:00-11:30 學(xué)生簽名: 2011年6月26日課程設(shè)計(jì)(論文)評(píng)閱意見項(xiàng) 目等級(jí)優(yōu)秀良好中等與格不與格課程設(shè)計(jì)態(tài)度評(píng)價(jià)出勤情況評(píng)價(jià)
3、任務(wù)難度評(píng)價(jià)工作量飽滿評(píng)價(jià)設(shè)計(jì)中創(chuàng)新性評(píng)價(jià)論文書寫規(guī)化評(píng)價(jià)綜合應(yīng)用能力評(píng)價(jià)綜合評(píng)定等級(jí) 評(píng)閱人 昕 職稱 教授 2011年6月27日 目錄TOC o 1-5 h u HYPERLINK l _Toc2813 一、任務(wù)分析與方案設(shè)計(jì) PAGEREF _Toc2813 1 HYPERLINK l _Toc7229 1任務(wù)分析 PAGEREF _Toc7229 1 HYPERLINK l _Toc23170 2.方案設(shè)計(jì) PAGEREF _Toc23170 1 HYPERLINK l _Toc26360 二、開發(fā)環(huán)境與工具 PAGEREF _Toc26360 1 HYPERLINK l _Toc42
4、13 1.設(shè)計(jì)環(huán)境 PAGEREF _Toc4213 1 HYPERLINK l _Toc2721 1.1 eclipse開發(fā)平臺(tái)介紹 PAGEREF _Toc2721 2 HYPERLINK l _Toc11807 2.基礎(chǔ)知識(shí) PAGEREF _Toc11807 2 HYPERLINK l _Toc27601 2.1java Socket網(wǎng)絡(luò)編程簡(jiǎn)介 PAGEREF _Toc27601 2 HYPERLINK l _Toc24490 2.2套接字的介紹 PAGEREF _Toc24490 2 HYPERLINK l _Toc31573 2.3 TCP/IP協(xié)議簡(jiǎn)介 PAGEREF _Toc
5、31573 3 HYPERLINK l _Toc23179 三、關(guān)鍵技術(shù)與理論 PAGEREF _Toc23179 3 HYPERLINK l _Toc22184 1.JAVA編程技術(shù) PAGEREF _Toc22184 3 HYPERLINK l _Toc19399 2.Java Socket網(wǎng)絡(luò)編程接口 PAGEREF _Toc19399 3 HYPERLINK l _Toc19447 四、相關(guān)圖解與程序 PAGEREF _Toc19447 4 HYPERLINK l _Toc6383 1.體系結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc6383 4 HYPERLINK l _Toc17632 2.
6、具體功能模塊的分析 PAGEREF _Toc17632 5 HYPERLINK l _Toc22070 3.程序代碼: PAGEREF _Toc22070 5 HYPERLINK l _Toc14760 五、測(cè)試與結(jié)果分析 PAGEREF _Toc14760 10 HYPERLINK l _Toc1059 六、心得體會(huì) PAGEREF _Toc1059 12 HYPERLINK l _Toc21679 七、參考文獻(xiàn) PAGEREF _Toc21679 12一、任務(wù)分析與方案設(shè)計(jì)1任務(wù)分析隨著計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展,網(wǎng)絡(luò)越來(lái)越深刻地改變著人們生活方方面面。各種基于網(wǎng)絡(luò)的應(yīng)用技術(shù)在人們的政治、經(jīng)濟(jì)、
7、生活等各個(gè)方面都發(fā)揮著重要的作用。例如 、MSN都是基于Internet的即時(shí)聊天工具。它們比傳統(tǒng)媒介具有數(shù)據(jù)量大、實(shí)時(shí)性強(qiáng)、操作簡(jiǎn)單成本低廉等優(yōu)點(diǎn)。因而它們?cè)诂F(xiàn)實(shí)生活中受到了廣泛的歡迎。然而基于局域網(wǎng)的即時(shí)聊天工具卻不如人意。為了適應(yīng)現(xiàn)代信息化,教學(xué)局域網(wǎng)應(yīng)運(yùn)而生,而教學(xué)局域網(wǎng)的即時(shí)通信則顯得尤為重要。 基于局域網(wǎng)的即時(shí)通信軟件的核心技術(shù)其實(shí)與基于Internet的即時(shí)通信軟件的設(shè)計(jì)技術(shù)是一樣的,只是規(guī)模比較小?;贗nternet的通信工具一般采用TCP或者UDP協(xié)議來(lái)實(shí)現(xiàn)的,開發(fā)技術(shù)已經(jīng)非常成熟,它們不僅實(shí)現(xiàn)了即時(shí)聊天、文件傳輸?shù)裙δ?,而且還能夠?qū)崿F(xiàn)即時(shí)視頻、語(yǔ)音聊天功能等。在局域網(wǎng),這
8、類軟件的設(shè)計(jì)比在Internet中設(shè)計(jì)更為簡(jiǎn)單。因?yàn)镮nternet是網(wǎng)絡(luò)中的網(wǎng)絡(luò),結(jié)構(gòu)更為復(fù)雜,遇到的情況要比在局域網(wǎng)中還要多。所以說(shuō)局域網(wǎng)的聊天工具的設(shè)計(jì)要相對(duì)簡(jiǎn)單些。而且即時(shí)通信是一個(gè)終端連往一個(gè)即時(shí)通信網(wǎng)絡(luò)的服務(wù)。即時(shí)通信不同于在于它的交談是實(shí)時(shí)的。大部分的即時(shí)通信服務(wù)提供了presence awareness的特性顯示聯(lián)絡(luò)人,聯(lián)絡(luò)人是否在線與能否和聯(lián)絡(luò)人交談。2.方案設(shè)計(jì)程序采用JAVA編程,利用java強(qiáng)大的基礎(chǔ)類庫(kù),調(diào)用java中界面開發(fā)的swing和網(wǎng)絡(luò)編程的net函數(shù)群來(lái)完成本次的java socket(網(wǎng)絡(luò)套接字)網(wǎng)絡(luò)即時(shí)通信工具的開發(fā)。在java中,可以把發(fā)送的信息看成是
9、一個(gè)一個(gè)的對(duì)象,當(dāng)我們利用socket把客戶端和服務(wù)器起來(lái)以后,他們之間就可以以對(duì)象流的形式發(fā)送彼此需要通信的信息了。在java的網(wǎng)絡(luò)編程中,最為核心的就是客戶端和服務(wù)器相互取得socket的,只要能夠能夠取得,其他的工作基本上都是java的面向?qū)ο蟮木幊趟枷肴ネ瓿梢恍┚W(wǎng)絡(luò)通訊的業(yè)務(wù)邏輯的處理。二、開發(fā)環(huán)境與工具1.設(shè)計(jì)環(huán)境開發(fā)程序的操作系統(tǒng):Windows7(在Windows XP、2000里也可以)編譯工具:eclipse程序工程:JAVA工程,Server和Client網(wǎng)絡(luò)環(huán)境:局域網(wǎng)(或互聯(lián)網(wǎng)上運(yùn)用,只要安裝客戶端并且知道服務(wù)器端的IP)1.1 eclipse開發(fā)平臺(tái)介紹Eclipse
10、是著名的跨平臺(tái)的自由集成開發(fā)環(huán)境(IDE)。主要用來(lái)Java語(yǔ)言開發(fā)。Eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持,使得Eclipse擁有較佳的靈活性。許多軟件開發(fā)商都以Eclipse為框架開發(fā)自己的IDE。另外由于eclipse是開源的,所以得到了廣大用戶的認(rèn)可。Eclipse也于2001年11月被它的開發(fā)公司IBM公司貢獻(xiàn)給開源社區(qū),現(xiàn)在它由非營(yíng)利軟件供應(yīng)商聯(lián)盟Eclipse基金會(huì)(Eclipse Foundation)管理。2.基礎(chǔ)知識(shí)2.1java Socket網(wǎng)絡(luò)編程簡(jiǎn)介Socket 有兩種主要的操作方式:面向連接的和無(wú)連接的。面向連接的 sockets 操作就像一部,他
11、們必須建立一個(gè)連接和一人呼叫。所有的事情在到達(dá)時(shí)的順序與它們出發(fā)時(shí)的順 序時(shí)一樣。無(wú)連接的 sockets 操作就像是一個(gè)投遞,沒(méi)有什么保證,多個(gè)可能在到達(dá) 時(shí)的順序與出發(fā)時(shí)的順序不一樣。 到底用哪種模式是郵應(yīng)用程序的需要決定的。如果可靠性更重要的話,用面向連接的操作會(huì)好一些.比如文件服務(wù)器需要他們的數(shù)據(jù)的正確性和有序性。如果一些數(shù)據(jù)丟失了,系統(tǒng)的有效性將會(huì)失去。一些服務(wù)器,比如間歇性地發(fā)送一些數(shù)據(jù)塊,如果數(shù)據(jù)丟了的話,服務(wù)器并不想要再重新發(fā)過(guò)一次,因?yàn)楫?dāng)數(shù)據(jù)到達(dá)的時(shí)候,它可能已經(jīng)過(guò)時(shí)了.確保數(shù)據(jù)的有序性和正確性需要額外的操作的存消耗,額外的費(fèi)用將會(huì)降低系統(tǒng)的回應(yīng)速率。無(wú)連接的操作使用數(shù)據(jù)報(bào)協(xié)
12、議。一個(gè)數(shù)據(jù)報(bào)是一個(gè)獨(dú)立的單元,它包含了所有的這次投遞的信息。把它想象成一個(gè)信封吧,它有目的地址和要發(fā)送的容。這個(gè)模式下的 socket 不需要連接一個(gè)目的的 socket,它只是簡(jiǎn)單地投出數(shù)據(jù)報(bào)。無(wú)連接的操作是快速的和高效的,但是數(shù)據(jù)安全性不佳。面向連接的操作使用 TCP 協(xié)議。一個(gè)這個(gè)模式下的 socket 必須在發(fā)送數(shù)據(jù)之前與目的地的 socket 取得一個(gè)連接。一旦連接建立了,sockets 就可以使用一個(gè)流接口:打開(-讀-寫-關(guān)閉)。所有的發(fā)送的信息都會(huì)在另一端以同樣的順序被接收.面向連接的操作比無(wú)連接的操作效率更低,但是數(shù)據(jù)的安全性更高。Java 降低了建立一個(gè) sockets
13、程序的難度。每一個(gè)傳輸模式都被封裝到了不同的類中。面向連接的類將會(huì)首先被我們討論。到底用哪種模式是郵應(yīng)用程序的需要決定的。如果可靠性更重要的話,用面向連接的操作會(huì)好一些。比如文件服務(wù)器需要他們的數(shù)據(jù)的正確性和有序性。如果一些數(shù)據(jù)丟失了,系統(tǒng)的有效性將會(huì)失去。一些服務(wù)器,比如間歇性地發(fā)送一些數(shù)據(jù)塊,如果數(shù)據(jù)丟了的話,服務(wù)器并不想要再重新發(fā)過(guò)一次。因?yàn)楫?dāng)數(shù)據(jù)到達(dá)的時(shí)候,它可能已經(jīng)過(guò)時(shí)了。確保數(shù)據(jù)的有序性和正確性需要額外的操作的存消耗,額外的費(fèi)用將會(huì)降低系統(tǒng)的回應(yīng)速率. 2.2套接字的介紹多個(gè)TCP連接或多個(gè)HYPERLINK :/baike.baidu /view/330120.htm應(yīng)用程序進(jìn)程
14、可能需要通過(guò)同一個(gè) TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多HYPERLINK :/baike.baidu /view/1708876.htm計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCPIP協(xié)議交互提供了稱為套接字(Socket)的接口。套接字,是支持TCP/IP的網(wǎng)絡(luò)通信的基本操作單元,可以看做是不同主機(jī)之間的進(jìn)程進(jìn)行雙向通信的端面點(diǎn),簡(jiǎn)單的說(shuō)就是通信的兩方的一種約定,用套接字中的相關(guān)函數(shù)來(lái)完成通信過(guò)程非常非常簡(jiǎn)單的舉例說(shuō)明下:Socket=Ip address+ TCP/UDP port. 應(yīng)用層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信時(shí),TCP和UDP會(huì)遇到同時(shí)為多個(gè)HYPERLINK :/ba
15、ike.baidu /view/330120.htm應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問(wèn)題。2.3 TCP/IP協(xié)議簡(jiǎn)介TCP/IP協(xié)議實(shí)際上就是在物理網(wǎng)上的一組完整的網(wǎng)絡(luò)協(xié)議。其中TCP是提供傳輸層服務(wù),而IP則是提供網(wǎng)絡(luò)層服務(wù)。TCP/IP主要包括以下協(xié)議:IP:網(wǎng)間協(xié)議(Internet Protocol) ,負(fù)責(zé)主機(jī)間數(shù)據(jù)的路由和網(wǎng)絡(luò)上數(shù)據(jù)的存儲(chǔ)。同時(shí)為ICMP,TCP,UDP提供分組發(fā)送服務(wù)。用戶進(jìn)程通常不需要涉與這一層。ICMP:網(wǎng)間報(bào)文控制協(xié)議(Internet Control Message Protocol)此協(xié)議處理網(wǎng)關(guān)和主機(jī)的差錯(cuò)和傳送控制。TCP: 傳輸控制協(xié)議(Transmi
16、ssion Control Protocol)這是一種提供給用戶進(jìn)程的可靠的全雙工字節(jié)流面向連接的協(xié)議。它要為用戶進(jìn)程提供虛電路服務(wù),并為數(shù)據(jù)可靠傳輸建立檢查。三、關(guān)鍵技術(shù)與理論1.JAVA編程技術(shù)Java是Sun公司推出的一種編程語(yǔ)言。它是一種通過(guò)解釋方式來(lái)執(zhí)行的語(yǔ)言,語(yǔ)法規(guī)則和C+類似。同時(shí),Java也是一種跨平臺(tái)的程序設(shè)計(jì)語(yǔ)言。用Java語(yǔ)言編寫的程序叫做“Applet”(小應(yīng)用程序),用編譯器將它編譯成類文件后,將它存在WWW頁(yè)面中,并在HTML檔上作好相應(yīng)標(biāo)記,用戶端只要裝上Java的客戶軟件就可以在網(wǎng)上直接運(yùn)行“Applet”。 Java非常適合于企業(yè)網(wǎng)絡(luò)和Internet環(huán)境,現(xiàn)
17、在已成為Internet中最受歡迎、最有影響的編程語(yǔ)言之一。 Java有許多值得稱道的優(yōu)點(diǎn),如簡(jiǎn)單、面向?qū)ο?、分布式、解釋性、可靠、安全、結(jié)構(gòu) Java Socket網(wǎng)絡(luò)編程接口 事實(shí)上網(wǎng)絡(luò)編程,簡(jiǎn)單的理解就是兩臺(tái)計(jì)算機(jī)相互通訊數(shù)據(jù)而已。對(duì)于程序員而言,去掌握一種編程接口并使用一種編程模型相對(duì)就會(huì)顯得簡(jiǎn)單的多了。Java sdk提供一些相對(duì)簡(jiǎn)單的api來(lái)完成這些工作,socket就是其中之一。 對(duì)于java而言,這些api存在于這個(gè)包里面。因此,只要導(dǎo)入這個(gè)包就可以準(zhǔn)備網(wǎng)絡(luò)編程了。網(wǎng)絡(luò)編程的基本模型就是客戶機(jī)到服務(wù)器模型。簡(jiǎn)單的說(shuō),就是兩個(gè)進(jìn)程之間相互通訊,然后其中一個(gè)必須提供一個(gè)固定的位置,
18、而另一個(gè)則只需要知道這個(gè)固定的位置,并去建立兩者之間的聯(lián)系。然后完成數(shù)據(jù)的通訊就可以了。這里提供固定位置的通常稱為服務(wù)器,而建立聯(lián)系的通常叫做客戶端?;谶@個(gè)簡(jiǎn)單的模型,就可以進(jìn)入網(wǎng)絡(luò)編程. 對(duì)于java而言已經(jīng)簡(jiǎn)化了socket的編程接口。首先需要確定有關(guān)提供固定位置的服務(wù)方是如何建立的。java提供了serversocket來(lái)對(duì)其進(jìn)行支持。事實(shí)上當(dāng)創(chuàng)建該類的一個(gè)實(shí)力對(duì)象并提供一個(gè)端口資源,就建立了一個(gè)固定位置可以讓其他計(jì)算機(jī)來(lái)訪問(wèn)。serversocket server=new serversocket(6789);這里稍微要注意的是端口的分配必須是唯一的。因?yàn)槎丝谑菫榱宋ㄒ粯?biāo)識(shí)每臺(tái)計(jì)算機(jī)
19、唯一服務(wù)的。另外端口號(hào)是從065535之間的,前1024個(gè)端口已經(jīng)被tcp/ip作為保留端口,因此,分配的端口只能是1024個(gè)之后的。有了固定位置,現(xiàn)在所需要的就是一根連接線了。該連接線由客戶方首先提出要求。因此java同樣提供了一個(gè)socket對(duì)象來(lái)對(duì)其進(jìn)行支持。只要客戶方創(chuàng)建一個(gè)socket的實(shí)例對(duì)象進(jìn)行支持就可以了。socket client=new socket(inetaddress.getlocalhost(),5678);客戶機(jī)必須知道有關(guān)服務(wù)器的ip地址。對(duì)于這一點(diǎn),java也提供了一個(gè)相關(guān)的類inetaddress。該對(duì)象的實(shí)例必須通過(guò)它的靜態(tài)方法來(lái)提供。它的靜態(tài)方法主要提供
20、了得到本機(jī)ip和通過(guò)名字或ip直接得到inetaddress的方法。 i/o操作總是和網(wǎng)絡(luò)編程息息相關(guān)的。因?yàn)榈讓拥木W(wǎng)絡(luò)是繼續(xù)數(shù)據(jù)的。除非遠(yuǎn)程調(diào)用,處理問(wèn)題的核心在執(zhí)行上。否則,數(shù)據(jù)的交互還是依賴于io操作的。所以,你也必須導(dǎo)入java.io這個(gè)包。java的io操作也不復(fù)雜。它提供了針對(duì)于字節(jié)流和unicode的讀者和寫者,然后也提供了一個(gè)緩沖用于數(shù)據(jù)的讀寫。bufferedreader in=new bufferedreader(new inputstreamreader(server.getinputstream(); printwriter out=new printwriter(se
21、rver.getoutputstream();上面兩句就是建立緩沖并把原始的字節(jié)流轉(zhuǎn)變?yōu)閡nicode可以操作。而原始的字節(jié)流來(lái)源于socket的兩個(gè)方法,getinputstream()和getoutputstream()方法,分別用來(lái)得到輸入和輸出。四、相關(guān)圖解與程序1.體系結(jié)構(gòu)設(shè)計(jì) 一般的通信工具,都采用客戶端/服務(wù)器體系結(jié)構(gòu)??蛻舳?服務(wù)器的結(jié)構(gòu)包含:客戶端和服務(wù)端??蛻舳嗽L問(wèn)和處理服務(wù)器上的數(shù)據(jù),服務(wù)器接收和處理客戶端的數(shù)據(jù)請(qǐng)求。這種模式的好處就是可以將一個(gè)系統(tǒng)分為兩個(gè)獨(dú)立的部分進(jìn)行開發(fā)設(shè)計(jì),便于軟件開發(fā)。而且也把一個(gè)軟件的功能交給兩個(gè)部分去完成,則更加有效的利用了系統(tǒng)資源。 本程序
22、中也采用了簡(jiǎn)單的客戶端/服務(wù)器模式。由于本程序比較簡(jiǎn)單,僅演示客戶端與服務(wù)端進(jìn)行通信。2.具體功能模塊的分析由于該系統(tǒng)采用C/S模式,所以對(duì)功能模塊進(jìn)行劃分時(shí),就需要分服務(wù)器和客戶端兩部分進(jìn)行。由于服務(wù)器的主要功能是等待接收并反饋客戶端的信息,所以服務(wù)器需要信息輸出模塊和通信模塊。其信模塊包含信息發(fā)送模塊和信息接收模塊。而信息輸出模塊要做到當(dāng)信息發(fā)生改變時(shí)與時(shí)更新??蛻舳送瑯右残枰ㄐ拍K和信息輸出模塊,同時(shí)要互相通信,就要具備輸入輸出。具體模塊劃分見下圖:3.程序代碼:服務(wù)器端:/*服務(wù)器端*簡(jiǎn)單的聊天界面*/package View;importjava.awt.*;import java
23、.awt.event.*;import javax.swing.*;import .*;import java.io.*;import java.util.*;publicclassMyServerextends JFrame implements ActionListener/定義需要的組件JTextField jtf;JLabel jl;JTextArea jta;JScrollPane jsp;utton 1,2;JPanel jp1,jp2,jp3;PrintWriter pw=null;publicstaticvoid main(String args) MyServer ms=ne
24、w MyServer();/構(gòu)造函數(shù)public MyServer()/初始化組件jp2=new JPanel();jl=new JLabel(消息記錄);jp2.add(jl);jta=new JTextArea();jsp=new JScrollPane(jta);jtf=new JTextField(20);1=new utton(發(fā)送);1.addActionListener(this);2=new utton(取消);2.addActionListener(this);jp3=new JPanel();jp3.add(jtf);jp3.add(1);jp3.add(2);this.a
25、dd(jp2,North);this.add(jsp,Center);this.add(jp3,South);this.setSize(400,300);this.setTitle(聊天 服務(wù)器端);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);try /讓服務(wù)器在8888端口監(jiān)聽ServerSocket ss=new ServerSocket(8888);/等待客戶端的Socket s=ss.accept();JOptionPane.showMessageDialog(this, 有客戶端連
26、接);/接受客戶端發(fā)送來(lái)的消息BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream();/給客戶端寫數(shù)據(jù)的時(shí)候用pw=new PrintWriter(s.getOutputStream(),true);/循環(huán)的讀取客戶端發(fā)來(lái)的信息while (true)String info=br.readLine();String time1=Calendar.getInstance().getTime().toLocaleString();jta.append(客戶端對(duì)服務(wù)器說(shuō): +rn+info+ 接收時(shí)間
27、:+time1+rn); catch (Exception e) e.printStackTrace();Overridepublicvoid actionPerformed(ActionEvent arg0) if (arg0.getSource()=1)/把寫的信息發(fā)送給客戶端String info=jtf.getText();String time2=Calendar.getInstance().getTime().toLocaleString();jta.append(服務(wù)器對(duì)客戶端說(shuō): +rn+info+ 發(fā)送時(shí)間:+time2+rn);jtf.setText();pw.printl
28、n(info);/清空輸入框elseif(arg0.getSource()=2)jtf.setText();客戶端:/*客戶端*簡(jiǎn)易聊天界面*/package Client;importjava.awt.*;import java.awt.event.*;import javax.swing.*;import .*;import java.util.Calendar;import java.io.*;publicclassMyClientextends JFrame implements ActionListener/定義需要的組件JLabel jl;JTextField jtf;JTextA
29、rea jta;JScrollPane jsp;utton 1,2;JPanel jp1,jp2;PrintWriter pw=null;publicstaticvoid main(String args) MyClient mc=new MyClient();/構(gòu)造函數(shù)public MyClient()/初始化組件jl =new JLabel(消息記錄);jp1=new JPanel();jp1.add(jl);jta=new JTextArea();jsp=new JScrollPane(jta);jtf=new JTextField(20);1=new utton(發(fā)送);1.addAc
30、tionListener(this);2 =new utton(取消);2.addActionListener(this);jp2=new JPanel();jp2.add(jtf);jp2.add(1);jp2.add(2);this.add(jp1,North);this.add(jsp,Center);this.add(jp2,South);this.setSize(400,300);this.setLocation(950,5);this.setTitle(聊天 客戶端);this.setVisible(true);this.setDefaultCloseOperation(JFram
31、e.EXIT_ON_CLOSE);this.connect();publicvoid connect()try /與服務(wù)器Socket s=new Socket(,8888);JOptionPane.showMessageDialog(this, 和服務(wù)器端連接成功);InputStreamReader isr=new InputStreamReader(s.getInputStream();BufferedReader br=new BufferedReader(isr);pw=new PrintWriter(s.getOutputStream(),true);while(true)/不停的
32、讀接受的數(shù)據(jù)String info=br.readLine();String time1=Calendar.getInstance().getTime().toLocaleString();jta.append(服務(wù)器對(duì)客戶端說(shuō): +rn+info+ 接收時(shí)間:+time1+rn); catch (Exception e) e.printStackTrace();Overridepublicvoid actionPerformed(ActionEvent arg0) if (arg0.getSource()=1)String info=jtf.getText();/把客戶端發(fā)送的信息顯示到j(luò)faString time2 =Calendar.getInstance().getTime().toLocaleString();jta.append(客戶端對(duì)服務(wù)器說(shuō): +rn+info+ 發(fā)送時(shí)間:+time2+rn);jtf.setText(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中性合同范本
- 單位購(gòu)買物品合同范本
- 北京麥田房產(chǎn)合同范本
- 寫紅木合同范本
- 個(gè)人居家養(yǎng)老服務(wù)合同范本
- 勞務(wù)合同范本護(hù)士
- 企業(yè)裝飾房子合同范本
- 勞務(wù)電氣安裝合同范本
- 戰(zhàn)隊(duì)經(jīng)紀(jì)合同范本
- 協(xié)議貨車出售合同范本
- 物品移交接收單(模板)
- 肺透明膜病課件
- 護(hù)理學(xué)基礎(chǔ)期末試卷及答案
- IMS攪拌樁施工方案
- 我的家鄉(xiāng)廣西南寧宣傳簡(jiǎn)介
- 變廢為寶-小學(xué)科學(xué)高段活動(dòng)案例
- 四川省政府采購(gòu)專家考試試題
- 證明無(wú)親子關(guān)系證明模板
- 消防工程擬投入主要施工設(shè)備機(jī)具表
- 4年級(jí)寫景類文章閱讀課件
- 《戰(zhàn)國(guó)策》教學(xué)講解課件
評(píng)論
0/150
提交評(píng)論