2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)說明書</b></p><p>  課程名稱: Java程序設(shè)計(jì) </p><p>  專 業(yè): 班級(jí): </p><p>  設(shè) 計(jì) 人:

2、 </p><p>  2015年 1月 13 日</p><p><b>  目 錄</b></p><p>  需求分析說明 …………………………………………………………11.1背景…………………………………………………………11.2 功能要求…………………………………

3、…………………………11.3 運(yùn)行環(huán)境……………………………………………………………11.4 功能實(shí)現(xiàn)…………………………………………………………1</p><p>  概要設(shè)計(jì)說明…………………………………………………………22.1 模塊調(diào)用圖……………………………………………………………22.2 套接字連接示意圖……………………………………………………22.3 主要函數(shù)聲明…………………………………

4、………………………2</p><p>  詳細(xì)設(shè)計(jì)說明…………………………………………………………43.1功能描述………………………………………………………43.2 主要功能詳述………………………………………………………43.3 主要代碼分析…………………………………………………………5</p><p>  調(diào)試分析…………………………………………………………84.1遇到的問題……

5、………………………………………………84.2 測(cè)試結(jié)果分析…………………………………………………………9</p><p>  用戶使用說明………………………………………………………9</p><p>  課程設(shè)計(jì)總結(jié)………………………………………………………12</p><p>  7 附錄…………………………………………………………12</p>&

6、lt;p><b>  1 需求分析說明</b></p><p><b>  1.1 背景</b></p><p>  在當(dāng)今的信息時(shí)代,越來越多的聊天工具被應(yīng)用,Java語(yǔ)言是當(dāng)今流行的網(wǎng)絡(luò)編程語(yǔ)言,它具有面向?qū)ο?、與平臺(tái)無關(guān)、安全、多線程等特點(diǎn)。此課程設(shè)計(jì) 的題目是聊天小程序,鞏固所學(xué)的Java語(yǔ)言基本知識(shí),增進(jìn)Java語(yǔ)言編輯基本功,拓

7、寬常用類庫(kù)的應(yīng)用。使我們把所學(xué)課程及相關(guān)知識(shí)加以融會(huì)貫通,全面掌握J(rèn)ava語(yǔ)言的編程思想及面向?qū)ο蟪绦蛟O(shè)計(jì)的方法。</p><p><b>  1.2 功能要求</b></p><p>  1、使用圖形用戶界面。</p><p>  2、能實(shí)現(xiàn)一個(gè)聊天室中多人聊天。</p><p><b>  3、可以兩人私聊

8、。</b></p><p><b>  1.3 運(yùn)行環(huán)境</b></p><p>  本程序基于Java和Eclipse開發(fā)環(huán)境,可以在一般的裝有Windows系統(tǒng)的主機(jī)上運(yùn)行。</p><p><b>  1.4 功能實(shí)現(xiàn)</b></p><p>  程序?qū)崿F(xiàn)了聊天室的基本功能,其中有

9、:</p><p><b>  啟動(dòng)服務(wù)器。</b></p><p><b>  進(jìn)入客戶端界面。</b></p><p><b>  登錄聊天室。</b></p><p><b>  發(fā)送信息。</b></p><p><b

10、>  關(guān)閉服務(wù)器。</b></p><p><b>  輸入昵稱。</b></p><p>  發(fā)送消息并收到其他客戶的消息。</p><p><b>  2 概要設(shè)計(jì)說明</b></p><p><b>  2.1 模塊調(diào)用圖</b></p>

11、<p>  2.2 套接字連接示意圖</p><p>  2.3 主要函數(shù)聲明</p><p>  1、Socket的構(gòu)造方法如下:</p><p>  Socket(String host,int port)</p><p>  參數(shù)host是服務(wù)器的IP地址,port是一個(gè)端口號(hào)。</p><p>  2

12、、ServerSocket的構(gòu)造方法如下:</p><p>  ServerSocket(int port)</p><p>  port是一個(gè)端口號(hào)。port必須和客戶呼叫的端口號(hào)相同</p><p>  當(dāng)建立時(shí)可能發(fā)生IOException異常,因此應(yīng)像下面那樣建立到服務(wù)器的套接字連接:</p><p><b>  Try&l

13、t;/b></p><p><b>  {</b></p><p>  Socket myscoket=new Socket(“http://192.168.0.78”,1880);</p><p><b> ?。?lt;/b></p><p>  Catch(IOException e){}<

14、;/p><p>  當(dāng)建立服務(wù)器時(shí)可能發(fā)生IOException異常,因此,應(yīng)像下面那樣建立接收客戶的服務(wù)器套接字:</p><p><b>  Try</b></p><p><b>  {</b></p><p>  ServerSocket server_scoket=new ServerSock

15、et(1880);</p><p><b>  }</b></p><p>  Catch(IOException e){}</p><p>  比如1880端口已被占用時(shí),就會(huì)發(fā)生IOException異常。</p><p>  當(dāng)服務(wù)器的ServerScoket對(duì)象server_socket建立后,就可以使用acce

16、pt()方法接收客戶的套接字連接呼叫,代碼如下:</p><p>  Server_socket.accept();</p><p>  客戶使用Socket類不帶參數(shù)的構(gòu)造方法Socket()創(chuàng)建一個(gè)套接字對(duì)象,該對(duì)象需調(diào)用</p><p>  Public void connect(SocketAddress endpoint) throws IOExcepti

17、on</p><p>  請(qǐng)求和參數(shù)SocketAddress指定地址的套接字建立連接,為了使用connect方法,可以使用SocketAddress的子類InetSocketAddress建立一個(gè)對(duì)象,InetSocketAddress的構(gòu)造方法如下:</p><p>  Public InetSocketAddress(InetAddress addr,int port)</p&

18、gt;<p><b>  3 詳細(xì)設(shè)計(jì)說明</b></p><p><b>  3.1 功能描述</b></p><p>  聊天程序分為服務(wù)器端和客戶端兩部分,服務(wù)端程序主要負(fù)責(zé)偵聽客戶端發(fā)來的消息,客戶端需要登陸到服務(wù)器端才可以實(shí)現(xiàn)正常的聊天功能。</p><p><b>  服務(wù)器:</

19、b></p><p>  在特定端口上進(jìn)行偵聽,等待客戶端連接。</p><p>  向已經(jīng)連接到服務(wù)器端的 用戶發(fā)送系統(tǒng)消息。</p><p>  當(dāng)停止服務(wù)時(shí),斷開所以的用戶連接。</p><p>  系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。</p><p><b>  客戶端:</b></p&g

20、t;<p>  連接到已經(jīng)開啟聊天服務(wù)的服務(wù)器端。</p><p>  當(dāng)服務(wù)器端開啟后,用戶可以發(fā)表聊天信息。</p><p>  用戶可以向所有人發(fā)送消息。</p><p>  系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。</p><p>  3.2 主要功能詳述</p><p>  3.2.1 客戶建立連接到服務(wù)器的套

21、接字對(duì)象</p><p>  1、當(dāng)套接字連接mysocket建立后,可以想象一條通信“線路”已經(jīng)建立起來。mysocket可以使用getInputStream()方法獲得一個(gè)輸入流,然后用這個(gè)輸入流讀取服務(wù)器放入“線路”的信息。mysocket還可以使用getOutputStream()方法獲得一個(gè)輸出流,然后用這個(gè)輸出流將信息寫入“線路”。</p><p>  2、在實(shí)際編寫程序時(shí),把

22、mysocket使用getInputStream()方法獲得的輸入流接到另一個(gè)數(shù)據(jù)流上,然后就可以從這個(gè)數(shù)據(jù)流讀取服務(wù)器來的信息,之所以這樣是因?yàn)楹竺鍰ataInputStream流有更好的從流中讀取信息的方法。</p><p>  3、同樣把mysocket使用getOutputStream()方法得到的輸出流接到另一個(gè)DataOutputStream數(shù)據(jù)流上,然后向這個(gè)數(shù)據(jù)流寫入信息,發(fā)送給服務(wù)器端,之所以這

23、樣做也是因?yàn)楹竺娴腄ataOutputStream流有更好的向流中寫入信息的方法。 </p><p>  3.2.2 ServerSocket類</p><p>  1、客戶負(fù)責(zé)建立客戶到服務(wù)器的套接字連接,即客戶負(fù)責(zé)呼叫。因此服務(wù)器必須建立一個(gè)等待接收客戶的套接字的ServerSocket對(duì)象。ServerSocket的構(gòu)造方法如下:</p><p>  Serv

24、erSocket(int port)</p><p>  port是一個(gè)端口號(hào)。port必須和客戶呼叫的端口號(hào)相同</p><p>  2、所謂接收客戶的套接字連接就是accept()方法會(huì)返回一個(gè)和客戶端Socket對(duì)象相連接的Socket對(duì)象,服務(wù)器端的這個(gè)Socket對(duì)象sc使用getOutputStream()方法獲得的輸出流將指向客戶端Socket對(duì)象myscoket使用getI

25、nputStream()方法獲得的那個(gè)輸入流;同樣,服務(wù)器端的這個(gè)Socket對(duì)象sc使用使用的 getInputStream()方法獲得的輸入流將指向客戶端Socket對(duì)象myscoket使用getOutputStream()方法獲得的那個(gè)輸出流 。</p><p>  3、連接建立以后,服務(wù)器端的套接字對(duì)象調(diào)用getInetAddress()方法可以獲取一個(gè)InetAddress對(duì)象,該對(duì)象含有客戶端的IP

26、地址和域名。同樣,客戶端的套接字對(duì)象調(diào)用getInetAddress()方法可以獲取一個(gè)InetAddress對(duì)象,該對(duì)象含有服務(wù)器端的IP地址和域名。</p><p>  雙方通信完畢后,應(yīng)使用close()方法關(guān)閉套接字連接。</p><p>  3.2.3 把套接字連接放在一個(gè)線程里</p><p>  需要注意的是,從套接字連接中讀取數(shù)據(jù)與從文件中讀取數(shù)據(jù)有

27、很大的不同。盡管兩者都是輸入流,但從文件中讀取數(shù)據(jù)時(shí),所有的數(shù)據(jù)都已經(jīng)在文件上了,而使用套接字連接時(shí),可能在另一端數(shù)據(jù)發(fā)送出來之前,就已經(jīng)開始試著讀取了,這時(shí),就會(huì)堵塞本線程,直到該讀取方法成功讀取信息,本線程才繼續(xù)執(zhí)行后續(xù)的操作。因此,服務(wù)器端收到一個(gè)客戶的套接字后,就應(yīng)該啟動(dòng)專門為該客戶服務(wù)的線程。</p><p>  3.3 主要代碼分析</p><p>  3.3.1 使用套接字實(shí)

28、現(xiàn)的主要方法</p><p>  服務(wù)器為每個(gè)客戶啟動(dòng)一個(gè)線程,在該線程中通過套接字和客戶交流信息。當(dāng)向服務(wù)器發(fā)送一條聊天信息時(shí),服務(wù)器要讓所有的這些線程中的輸出流寫入信息,這樣所有的客戶的套接字的輸入流就讀取到了這一條信息。</p><p>  如果想把信息送給特定的用戶,服務(wù)器就讓特定的線程中的輸出流寫入信息,那么只有特定的客戶的套接字的輸入流可以讀取到這條信息。</p>

29、<p><b>  3.3.2 客戶端</b></p><p>  public void actionPerformed(ActionEvent e)</p><p>  { if(e.getSource()==connection)</p><p>  { try //請(qǐng)求和服務(wù)器建立套接字連接</p><

30、;p>  { if(socket.isConnected())</p><p><b>  {} </b></p><p><b>  else</b></p><p>  {InetAddress address=InetAddress.getByName("127.0.0.1");</p

31、><p>  InetSocketAddress socketAddress=new InetSocketAddress(address,666);</p><p>  socket.connect(socketAddress); </p><p>  in =new DataInputStream(socket.getInputStream());</p>

32、<p>  out = new DataOutputStream(socket.getOutputStream());</p><p>  name=inputName.getText();</p><p>  out.writeUTF("姓名:"+name);</p><p>  send.setEnabled(true);<

33、;/p><p>  if(!(thread.isAlive()))</p><p>  thread=new Thread(this); </p><p>  thread.start();</p><p><b>  }</b></p><p><b>  } </b><

34、/p><p>  catch (IOException ee){}</p><p><b>  }</b></p><p>  if(e.getSource()==send)</p><p>  { String s=inputContent.getText();</p><p>  if(s!=n

35、ull)</p><p>  { try { out.writeUTF("聊天內(nèi)容:"+name+":"+s);</p><p><b>  }</b></p><p>  catch(IOException e1){} </p><p>  } &l

36、t;/p><p><b>  }</b></p><p><b>  }</b></p><p>  3.3.3 服務(wù)器端</p><p>  public class ChatServer </p><p>  { public static void main(String

37、 args[])</p><p>  { ServerSocket server=null;</p><p>  Socket you=null;</p><p>  Hashtable peopleList; </p><p>  peopleList=new Hashtable(); </p><p>

38、  while(true) </p><p>  { try { server=new ServerSocket(666);</p><p><b>  }</b></p><p>  catch(IOException e1) </p><p>  { System.out.println("正在監(jiān)聽&

39、quot;);//ServerSocket對(duì)象不能重復(fù)創(chuàng)建</p><p><b>  } </b></p><p>  try { you=server.accept(); //堵塞狀態(tài),除非有客戶呼叫 </p><p>  InetAddress address=you.getInetAddress();&

40、lt;/p><p>  System.out.println("客戶的IP:"+address);</p><p><b>  }</b></p><p>  catch (IOException e) {}</p><p>  if(you!=null) </p><p>  {

41、 Server_thread peopleThread=new Server_thread(you,peopleList);</p><p>  peopleThread.start();//為每個(gè)客戶啟動(dòng)一個(gè)專門的線程 </p><p><b>  }</b></p><p>  else { continue

42、;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  class Server_thread exte

43、nds Thread</p><p>  { String name=null; </p><p>  Socket socket=null;</p><p>  File file=null;</p><p>  DataOutputStream out=null;</p><p>  DataInput

44、Stream in=null;</p><p>  Hashtable peopleList=null;</p><p>  Server_thread(Socket t,Hashtable list)</p><p>  { peopleList=list;</p><p><b>  socket=t;</b>&l

45、t;/p><p>  try { in=new DataInputStream(socket.getInputStream());</p><p>  out=new DataOutputStream(socket.getOutputStream());</p><p><b>  }</b></p><p>  catc

46、h (IOException e) {}</p><p><b>  } </b></p><p><b>  4 調(diào)試分析</b></p><p><b>  4.1 遇到的問題</b></p><p>  圖形用戶界面設(shè)計(jì)按鈕和文本框設(shè)計(jì)中的按鈕上的事件處理問題。<

47、/p><p>  解決:通過java程序設(shè)計(jì)教程中的事件和事件處理知道了具體事件的處理是使用事件對(duì)應(yīng)的監(jiān)聽者接口中所提供的抽象方法,這些方法需要重新定義,例如本程序中的public void actionPerformed(ActionEvent e),該方法用來對(duì)發(fā)生在按鈕上事件的處理。</p><p>  輸入流和輸出流的問題。</p><p>  解決:Input

48、StreamReader緩沖處理流通信雙方需要建立Socket連接,本程序中Socket包含兩個(gè)流一個(gè)輸出流向外發(fā)送數(shù)據(jù),一個(gè)輸入流接收數(shù)據(jù)。</p><p><b>  監(jiān)聽端口的問題。</b></p><p>  解決:通過Socket應(yīng)用方面的知識(shí)知道了監(jiān)聽端口是引用Socket構(gòu)造方法,指定了服務(wù)器程序中其監(jiān)聽的端口,還需拋出異常。</p>&l

49、t;p>  4.2 測(cè)試結(jié)果分析</p><p>  本次設(shè)計(jì)在調(diào)試過程中出現(xiàn)了許多問題,其中,最為嚴(yán)重的錯(cuò)誤就是在最初的程序中,并沒有將異常處理加入到程序中去,所以在程序運(yùn)行時(shí)出現(xiàn)了許多錯(cuò)誤,后來經(jīng)過同學(xué)的幫助和查閱資料,我將異常處理加入到了代碼中,也就沒有大的問題。異常處理對(duì)程序是很重要的,加入異常處理有益于我們找到自己的錯(cuò)誤,同時(shí)異常處理也能夠?qū)⒄Z(yǔ)句使用程序處理錯(cuò)誤的能力,有效的提高了我們完成程序的效

50、率。</p><p><b>  5 用戶使用說明</b></p><p>  首先運(yùn)行服務(wù)器端,正在監(jiān)聽。</p><p>  運(yùn)行客戶端,輸入昵稱,并連接服務(wù)器,并發(fā)送消息。</p><p>  運(yùn)行多個(gè)客戶端,實(shí)現(xiàn)群聊。</p><p><b>  6 課程設(shè)計(jì)總結(jié)</b&g

51、t;</p><p>  這次課程設(shè)計(jì)經(jīng)過不懈的努力,從對(duì)整個(gè)實(shí)現(xiàn)的功能的設(shè)計(jì),編寫代碼,還有調(diào)試分析與完善設(shè)計(jì),經(jīng)過了很長(zhǎng)一段時(shí)間才實(shí)現(xiàn)了程序基本滿足聊天的需要。通過這次課程設(shè)計(jì),增強(qiáng)了動(dòng)手能力和解決實(shí)際問題的能力,再次之前,對(duì)Java編程技術(shù)和網(wǎng)絡(luò)Socket編程知識(shí)都只是略知皮毛,缺乏深入的認(rèn)識(shí),對(duì)其工作方式和原理缺乏透徹的認(rèn)識(shí)。</p><p>  在這段期間里,我認(rèn)真學(xué)習(xí)了Jav

52、a語(yǔ)言的開發(fā)、Applet小程序的實(shí)現(xiàn)、異常處理,對(duì)編程思想有了進(jìn)一步的體會(huì),程序雖然完成,但是還存在許多缺點(diǎn),比如沒有列出上線客戶、界面雖然簡(jiǎn)潔但是不太美觀,由于時(shí)間和掌握的知識(shí)的問題只實(shí)現(xiàn)了群聊,對(duì)私聊的功能沒有實(shí)現(xiàn),這個(gè)部分在今后我會(huì)繼續(xù)完善,希望自己在不斷學(xué)習(xí)和實(shí)踐中收獲到更多。</p><p><b>  7 附錄</b></p><p>  //ChatS

53、erver.java</p><p>  import java.io.*;</p><p>  import java.net.*;</p><p>  import java.util.*;</p><p>  public class ChatServer </p><p>  { public static

54、void main(String args[])</p><p>  { ServerSocket server=null;</p><p>  Socket you=null;</p><p>  Hashtable peopleList; </p><p>  peopleList=new Hashtable(); </

55、p><p>  while(true) </p><p>  { try { server=new ServerSocket(666);</p><p><b>  }</b></p><p>  catch(IOException e1) </p><p>  { System.out.pri

56、ntln("正在監(jiān)聽");</p><p><b>  } </b></p><p>  try { you=server.accept(); </p><p>  InetAddress address=you.getInetAddress();</p><p>

57、  System.out.println("客戶的IP:"+address);</p><p><b>  }</b></p><p>  catch (IOException e) {}</p><p>  if(you!=null) </p><p>  { Server_thread peop

58、leThread=new Server_thread(you,peopleList);</p><p>  peopleThread.start(); </p><p><b>  }</b></p><p>  else { continue;</p><p><b>  }&l

59、t;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  class Server_thread extends Thread</p><p>  {

60、String name=null; </p><p>  Socket socket=null;</p><p>  File file=null;</p><p>  DataOutputStream out=null;</p><p>  DataInputStream in=null;</p><p>

61、;  Hashtable peopleList=null;</p><p>  Server_thread(Socket t,Hashtable list)</p><p>  { peopleList=list;</p><p><b>  socket=t;</b></p><p>  try { in=new D

62、ataInputStream(socket.getInputStream());</p><p>  out=new DataOutputStream(socket.getOutputStream());</p><p><b>  }</b></p><p>  catch (IOException e) {}</p><

63、p><b>  } </b></p><p>  public void run() </p><p>  { while(true)</p><p>  { String s=null; </p><p><b>  try{</b></p><p

64、>  s=in.readUTF(); //in讀取客戶放進(jìn)“線路”里的信息,堵塞狀態(tài) </p><p>  if(s.startsWith("姓名:")) </p><p><b>  { name=s;</b></p><p>  boolean bo

65、o=peopleList.containsKey(name);</p><p>  if(boo==false) </p><p>  { peopleList.put(name,this); </p><p><b>  }</b></p><p><b>  else</b>&

66、lt;/p><p>  { out.writeUTF("請(qǐng)換昵稱:");</p><p>  socket.close();</p><p><b>  break; </b></p><p><b>  }</b></p><p><b>  }&

67、lt;/b></p><p>  else if(s.startsWith("聊天內(nèi)容")) </p><p>  { String message=s.substring(s.indexOf(":")+1);</p><p>  Enumeration chatPersonList=peopleList.elemen

68、ts(); </p><p>  while(chatPersonList.hasMoreElements())</p><p>  { ((Server_thread)chatPersonList.nextElement()).out.writeUTF("聊天內(nèi)容:"+</p><p><b>  message);&l

69、t;/b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  catch(IOException ee) </p><p>  { Enume

70、ration chatPersonList=peopleList.elements(); </p><p>  while(chatPersonList.hasMoreElements()) </p><p><b>  { try</b></p><p>  { Server_thread th=(Serve

71、r_thread)chatPersonList.nextElement();</p><p>  if(th!=this&&th.isAlive())</p><p>  { th.out.writeUTF("客戶離線:"+name);</p><p><b>  }</b></p><p

72、><b>  }</b></p><p>  catch(IOException eee){}</p><p><b>  } </b></p><p>  peopleList.remove(name); </p><p>  try { socket.close();</p>

73、<p>  } </p><p>  catch(IOException eee){}</p><p>  System.out.println(name+"客戶離開了");</p><p>  break; </p><p>  } &l

74、t;/p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //Client.java</p><p>  import java.net.*;</p><

75、;p>  import java.io.*;</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import javax.swing.*; </p><p>  public class Client</p><p>

76、;  { public static void main(String args[])</p><p>  { new ChatClient();</p><p><b>  }</b></p><p><b>  }</b></p><p>  class ChatClient extends

77、 Frame implements Runnable,ActionListener</p><p>  { Button connection,send;</p><p>  TextField inputName,inputContent;</p><p>  TextArea chatResult;</p><p>  Socket s

78、ocket=null;</p><p>  DataInputStream in=null;</p><p>  DataOutputStream out=null;</p><p>  Thread thread; </p><p>  String name="";</p><p>  publ

79、ic ChatClient ()</p><p>  { socket=new Socket();</p><p>  Box box1=Box.createHorizontalBox();</p><p>  connection=new Button("Connect To Server");</p><p>  s

80、end=new Button("Send");</p><p>  send.setEnabled(false);</p><p>  inputName=new TextField(6);</p><p>  inputContent=new TextField(22);</p><p>  chatResult=new

81、 TextArea();</p><p>  box1.add(new Label("Input Nickname"));</p><p>  box1.add(inputName);</p><p>  box1.add(connection);</p><p>  Box box2=Box.createHorizont

82、alBox();</p><p>  box2.add(new Label("Edit"));</p><p>  box2.add(inputContent);</p><p>  box2.add(send);</p><p>  connection.addActionListener(this);</p>

83、;<p>  send.addActionListener(this);</p><p>  thread=new Thread(this); </p><p>  add(box1,BorderLayout.NORTH);</p><p>  add(box2,BorderLayout.SOUTH);</p><p>  ad

84、d(chatResult,BorderLayout.CENTER);</p><p>  setBounds(10,30,400,280);</p><p>  setVisible(true);</p><p>  validate();</p><p>  addWindowListener(new WindowAdapter()<

85、/p><p>  { public void windowClosing(WindowEvent e)</p><p>  { System.exit(0);</p><p><b>  }</b></p><p><b>  });</b></p><p><b>

86、;  }</b></p><p>  public void actionPerformed(ActionEvent e)</p><p>  { if(e.getSource()==connection)</p><p><b>  { try </b></p><p>  { if(socket.is

87、Connected())</p><p><b>  {} </b></p><p><b>  else</b></p><p>  { InetAddress address=InetAddress.getByName("127.0.0.1");</p><p>  Ine

88、tSocketAddress socketAddress=new InetSocketAddress(address,666);</p><p>  socket.connect(socketAddress); </p><p>  in =new DataInputStream(socket.getInputStream());</p><p>  out = n

89、ew DataOutputStream(socket.getOutputStream());</p><p>  name=inputName.getText();</p><p>  out.writeUTF("姓名:"+name);</p><p>  send.setEnabled(true);</p><p>  

90、if(!(thread.isAlive()))</p><p>  thread=new Thread(this); </p><p>  thread.start();</p><p><b>  }</b></p><p><b>  } </b></p><p>  c

91、atch (IOException ee){}</p><p><b>  }</b></p><p>  if(e.getSource()==send)</p><p>  { String s=inputContent.getText();</p><p>  if(s!=null)</p><

92、p>  { try { out.writeUTF("聊天內(nèi)容:"+name+":"+s);</p><p><b>  }</b></p><p>  catch(IOException e1){} </p><p>  } </p><p>&

93、lt;b>  }</b></p><p><b>  }</b></p><p>  public void run()</p><p>  { String s=null;</p><p>  while(true)</p><p>  { try{ s=in.rea

94、dUTF();</p><p>  chatResult.append("\n"+s);</p><p><b>  }</b></p><p>  catch(IOException e) </p><p>  { chatResult.setText("與服務(wù)器已斷開");&

95、lt;/p><p>  try { socket.close();</p><p><b>  }</b></p><p>  catch(Exception exp) {}</p><p><b>  break;</b></p><p><b>  } <

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論