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

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1 前言1</b></p><p><b>  2 需求分析1</b></p><p>  2.1 任務(wù)和要求1</p><p>  2.2 運行環(huán)境1</p><p> 

2、 2.3 開發(fā)工具1</p><p><b>  3 分析和設(shè)計1</b></p><p>  3.1 系統(tǒng)分析及設(shè)計思路1</p><p>  3.2 主要類圖1</p><p>  3.3 系統(tǒng)流程7</p><p>  4 具體代碼實現(xiàn)8</p><p>

3、  5 課程設(shè)計總結(jié)25</p><p>  5.1 程序運行結(jié)果或預(yù)期運行結(jié)果25</p><p>  5.2 設(shè)計結(jié)論27</p><p><b>  參考文獻27</b></p><p><b>  致 謝29</b></p><p><b>  

4、1 前言</b></p><p>  編寫一個程序來模擬實現(xiàn)局域網(wǎng)的聊天和文件傳輸,通過編寫一個文件服務(wù)器程序和一個聊天服務(wù)器程序來監(jiān)聽文件的發(fā)送和聊天,當(dāng)有文件傳輸或聊天事件發(fā)生時,如果同意事件的進行,則通過輸入流、輸出流對文件或聊天信息進行傳送,那么接收的,如果是文件就選擇保存路徑保存,如果是聊天信息就再聊天對話框的信息顯示欄里顯示,當(dāng)有一方終止連接,能告知對方,整個事件結(jié)束。</p>

5、<p><b>  2 需求分析</b></p><p><b>  2.1 任務(wù)和要求</b></p><p>  編寫一個程序來實現(xiàn)局域網(wǎng)的聊天和文件傳輸,具體要求如下:</p><p> ?。?)具有一個較好的可視化界面,大體做到美觀、大方。</p><p> ?。?)能進行聊天

6、和文件傳輸,在傳送文件時,接收方要有選擇接不接收的權(quán)力。</p><p> ?。?)在聊天時,如果沒有和對方連接成功,信息發(fā)送框為不可編輯狀態(tài)。</p><p> ?。?)當(dāng)在成員列表中雙擊某個成員時,系統(tǒng)自動和對方連接。</p><p> ?。?)連接成功,就能正常聊天,且聊天時不能發(fā)送空信息。</p><p> ?。?)在一方主動終止連接

7、時,要及時通知對方,提示“對方已終止連接!”。</p><p><b>  2.2 運行環(huán)境</b></p><p> ?。?)WINDOWS2000/XP系統(tǒng)</p><p> ?。?) editplus 或eclipse</p><p><b>  2.3 開發(fā)工具</b></p>

8、<p><b>  Java </b></p><p><b>  3 分析和設(shè)計</b></p><p>  3.1 系統(tǒng)分析及設(shè)計思路</p><p>  3.1.1系統(tǒng)的理論基礎(chǔ)</p><p>  (1)TCP/IP協(xié)議</p><p>  網(wǎng)絡(luò)編程中兩個

9、主要的問題,一個是如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺或多臺主機,另一個就是找到主機后如何可靠高效的進行數(shù)據(jù)傳輸。</p><p>  在TCP/IP協(xié)議中IP層主要負(fù)責(zé)網(wǎng)絡(luò)主機的定位,數(shù)據(jù)傳輸?shù)穆酚桑蒊P地址可以唯一地確定Internet上的一臺主機。</p><p>  而TCP層則提供面向應(yīng)用的可靠(tcp)的或非可靠(UDP)的數(shù)據(jù)傳輸機制,這是網(wǎng)絡(luò)編程的主要對象,一般不需要關(guān)心IP層是如何

10、處理數(shù)據(jù)的。</p><p>  目前較為流行的網(wǎng)絡(luò)編程模型是客戶機/服務(wù)器(C/S)結(jié)構(gòu)。即通信雙方一方作為服務(wù)器等待客戶提出請求并予以響應(yīng)??蛻魟t在需要服務(wù)時向服務(wù)器提 出申請。服務(wù)器一般作為守護進程始終運行,監(jiān)聽網(wǎng)絡(luò)端口,一旦有客戶請求,就會啟動一個服務(wù)進程來響應(yīng)該客戶,同時自己繼續(xù)監(jiān)聽服務(wù)端口,使后來的客戶也 能及時得到服務(wù)。</p><p>  (2)基于Socket的java網(wǎng)

11、絡(luò)編程</p><p>  Socket所支持的協(xié)議種類也不光TCP/IP一種,因此兩者之間是沒有必然聯(lián)系的。在Java環(huán)境下,Socket編程主要是指基于TCP/IP協(xié)議的網(wǎng)絡(luò)編程。</p><p>  Server端Listen(監(jiān)聽)某個端口是否有連接請求,Client端向Server 端發(fā)出Connect(連接)請求,Server端向Client端發(fā)回Accept(接受)消息。一個

12、連接就建立起來了。Server端和Client 端都可以通過Send,Write等方法與對方通信。</p><p>  對于一個功能齊全的Socket,都要包含以下基本結(jié)構(gòu),其工作過程包含以下四個基本的步驟:</p><p> ?、?創(chuàng)建Socket;</p><p> ?、?打開連接到Socket的輸入/出流;</p><p> ?、?按照

13、一定的協(xié)議對Socket進行讀/寫操作;</p><p> ?、?關(guān)閉Socket.(在實際應(yīng)用中,并未使用到顯示的close,雖然很多文章都推薦如此,不過在我的程序中,可能因為程序本身比較簡單,要求不高,所以并未造成什么影響。)</p><p>  3.1.2系統(tǒng)的設(shè)計</p><p>  本系統(tǒng)大體由對話框模塊、文件服務(wù)器模塊、聊天服務(wù)器模塊、文件發(fā)送模塊、文件

14、接收模塊、聊天信息發(fā)送模塊、聊天信息接收的模塊、信息打印顯示模塊、文件 選擇模塊、成員列表裝載模塊等。下面列出部分設(shè)計:</p><p> ?。?)文件發(fā)送服務(wù)器的設(shè)計</p><p>  文件服務(wù)器是用來監(jiān)聽是否要傳遞文件,如果連接成功,有文件發(fā)送則創(chuàng)建一個功能齊全的Socket來傳遞文件,主要的代碼為:</p><p>  class FileServer ex

15、tends Thread{</p><p>  public void run(){</p><p><b>  try{</b></p><p>  ServerSocket MyServer = new ServerSocket(4331);</p><p>  while(true){</p><

16、;p>  Socket si = MyServer.accept();</p><p><b>  int yon;</b></p><p>  yon= JOptionPane.showConfirmDialog(null,si.getInetAddress().getHostAddress() + "向你發(fā)出文件接收,接收?","

17、;文件接收",JOptionPane.YES_NO_OPTION);</p><p>  if(yon==JOptionPane.YES_OPTION){</p><p>  new fileAccepter(si).start();</p><p><b>  }else{</b></p><p>  Out

18、putStream os = si.getOutputStream();</p><p>  os.write("false".getBytes());</p><p>  os.close();</p><p>  si.close();</p><p><b>  }}}</b></p>

19、;<p>  catch(Exception event8){</p><p><b>  }</b></p><p><b>  }}</b></p><p> ?。?)文件接收的設(shè)計</p><p>  文件接收是把通過socket流發(fā)來的字節(jié)流,還原成相應(yīng)的文件,主要代碼為:&l

20、t;/p><p>  class fileAccepter extends Thread{</p><p>  byte[] dataAccepter;</p><p><b>  Socket s;</b></p><p>  FileOutputStream fos;</p><p>  Outp

21、utStream acceptOS;</p><p>  InputStream acceptIS;</p><p>  ObjectInputStream ois;</p><p>  public fileAccepter(Socket sx){</p><p><b>  s = sx; }</b></p&

22、gt;<p>  JFrame frame = new JFrame();</p><p>  public void run(){</p><p>  dataAccepter = new byte[DEFAULT_DATASIZE];</p><p>  FileDialog fd=new FileDialog(frame,"file s

23、ave dialog",FileDialog.SAVE);</p><p>  fd.setFile("unname");</p><p>  fd.setVisible(true);</p><p>  String dir = fd.getDirectory();</p><p>  int i = 0,j

24、= 0;System.out.println(dir);</p><p>  if(dir==null){</p><p><b>  try{</b></p><p>  OutputStream os = s.getOutputStream();</p><p>  os.write("false"

25、;.getBytes());</p><p>  os.close();</p><p><b>  }</b></p><p>  catch(Exception event){</p><p><b>  }</b></p><p><b>  }</b&

26、gt;</p><p><b>  else{</b></p><p><b>  try{</b></p><p>  acceptOS = s.getOutputStream();</p><p>  acceptIS = s.getInputStream();</p><p

27、>  ois = new ObjectInputStream(acceptIS);</p><p>  acceptOS.write("true".getBytes());</p><p>  acceptNameCarryer = (MyVector)ois.readObject();</p><p>  acceptOS.write(&

28、quot;ok".getBytes());</p><p>  for(i = 0;i < acceptNameCarryer.size();i++){</p><p>  fos = new FileOutputStream(dir + acceptNameCarryer.elementAt(i));</p><p>  note("文件

29、" + acceptNameCarryer.elementAt(i) + "正在接收"); while(true){</p><p>  j = acceptIS.read(dataAccepter);</p><p>  String str = new String(dataAccepter,0,j);</p

30、><p>  if(str.equals("over")){</p><p>  note("文件" + acceptNameCarryer.elementAt(i) + "接收完畢");</p><p><b>  break; }</b></p><p><

31、;b>  else{</b></p><p>  fos.write(dataAccepter,0,j);</p><p><b>  }}</b></p><p>  fos.close(); }}</p><p>  catch(Exception event){}</p><

32、p><b>  finally{</b></p><p>  try{ s.close();</p><p>  acceptOS.close();</p><p>  acceptIS.close();</p><p>  ois.close();}</p><p>  cat

33、ch(Exception event){</p><p><b>  }}}}}</b></p><p> ?。?)文件選擇模塊設(shè)計</p><p>  文件選擇模塊是用來選擇需要傳送的文件并載入fileCarryer中,代碼為:</p><p>  public void fileSelect(){</p>

34、<p>  FileDialog fd = new FileDialog(this,"file load dialog",FileDialog.LOAD);</p><p>  fd.setVisible(true);</p><p>  boolean repeat = false;</p><p>  String dir =

35、fd.getDirectory() + fd.getFile();</p><p>  if(dir.equals("nullnull")){</p><p><b>  }</b></p><p><b>  else{</b></p><p>  for(int i = 0;

36、i < realFileCarryer.size();i++){</p><p>  if(((File)realFileCarryer.elementAt(i)).getPath().equals(dir)){</p><p>  repeat = true;</p><p><b>  }</b></p><p&g

37、t;<b>  }</b></p><p>  if(repeat == false){</p><p>  File file = new File(dir);</p><p>  realFileCarryer.addElement(file);</p><p>  fileCarryer.addElement(fd

38、.getFile() + " 長度:" + file.length());</p><p>  sendNameCarryer.addElement(fd.getFile());</p><p>  fileLength.addElement(file.length());</p><p><b>  }else{</b>

39、;</p><p>  JOptionPane.showMessageDialog(null,"已存在此文件!");</p><p><b>  }} }</b></p><p><b>  3.2 主要類圖</b></p><p>  圖3.1 線程類圖</p>

40、<p>  圖3.2 主類test1類圖</p><p><b>  3.3 系統(tǒng)流程</b></p><p>  圖3.3 系統(tǒng)流程</p><p>  4 具體代碼實現(xiàn)(主要源代碼)</p><p>  import java.awt.*;</p><p>  import j

41、ava.awt.event.*;</p><p>  import java.net.*;</p><p>  import javax.swing.*;</p><p>  import javax.swing.border.*;</p><p>  import java.awt.image.BufferedImage;</p>

42、;<p>  import java.util.*;</p><p>  import java.io.*;</p><p>  public class test1 extends JFrame</p><p><b>  { </b></p><p>  public int DEFAULT_DAT

43、ASIZE = 1024 * 10;</p><p>  public int DEFAULT_DELAY = 1000;</p><p>  boolean flag = false;</p><p>  private JTextArea sendmessage = new JTextArea();</p><p>  private J

44、TextArea showmessage = new JTextArea();</p><p>  private JSplitPane SplitPane;</p><p>  private JButton toolFontButton;</p><p>  private JButton toolFaceButton;</p><p>

45、  private JButton button;</p><p>  private JButton button_1;</p><p>  private JButton button_2;</p><p>  private JButton button_3;</p><p>  private JButton button_4;<

46、;/p><p>  private JButton button_5;</p><p>  private JButton button_6;</p><p>  private String bgbottomc = ImageManager.getImageURL("loginbc.png");</p><p>  priv

47、ate Image bottoml = ImageManager.getImageWithImgName("loginbl.png");</p><p>  private Image bottomr = ImageManager.getImageWithImgName("loginbr.png");</p><p>  private Textur

48、ePaint bottomcPaint = ImageManager.createTexturePaint(bgbottomc);</p><p>  DefaultListModel fileCarryer = new DefaultListModel();</p><p>  DefaultListModel clientCarryer = new DefaultListModel()

49、;</p><p>  MyVector sendNameCarryer = new MyVector();</p><p>  MyVector acceptNameCarryer = new MyVector();</p><p>  MyVector realFileCarryer = new MyVector();</p><p> 

50、 MyVector fileLength = new MyVector();</p><p>  MyVector ipCarryer;</p><p>  JList JList1 = new JList(clientCarryer);</p><p>  JList JList2 = new JList(fileCarryer);</p><

51、p>  Dimension screenSize;</p><p>  Dimension frameSize;</p><p>  Socket socket = new Socket();</p><p>  Socket so = new Socket();</p><p>  InputStream clientin=null;

52、</p><p>  OutputStream clientout=null;</p><p>  InputStream serverin=null;</p><p>  OutputStream serverout=null;</p><p>  FileOutputStream fos= null;</p><p&g

53、t;  private JScrollPane leftscroll = new JScrollPane(showmessage);</p><p>  private JScrollPane rightscroll = new JScrollPane(JList1);</p><p>  private JScrollPane rightscroll_2 = new JScrollPan

54、e(JList2);</p><p>  private JScrollPane bottomscroll = new JScrollPane(sendmessage);</p><p>  String str="";</p><p><b>  test1()</b></p><p><b&

55、gt;  {</b></p><p>  setBounds(100,100,542,512);</p><p>  SplitPane = new JSplitPane();</p><p>  SplitPane.setResizeWeight(0.1);</p><p>  SplitPane.setOrientation(

56、JSplitPane.HORIZONTAL_SPLIT);</p><p>  SplitPane.setDividerLocation(387);</p><p>  SplitPane.setDividerSize(10);</p><p>  SplitPane.setEnabled(false);</p><p>  SplitPan

57、e.setOneTouchExpandable(true);</p><p>  SplitPane.setBorder(new TitledBorder(null, "",</p><p>  TitledBorder.DEFAULT_JUSTIFICATION,</p><p>  TitledBorder.DEFAULT_POSITION,

58、 null, null));// 設(shè)置面版的邊框</p><p>  getContentPane().add(SplitPane, BorderLayout.CENTER);// 將分割面版添加到上級容器中*/</p><p>  JPanel Leftpanel = new JPanel();</p><p>  Leftpanel.setLayout(new

59、BorderLayout());</p><p>  SplitPane.setLeftComponent(Leftpanel);</p><p>  JPanel Toppanel = new JPanel();</p><p>  Toppanel.setPreferredSize(new Dimension(0, 300));</p><p

60、>  Toppanel.setLayout(new BorderLayout());</p><p>  showmessage.setEditable(false);</p><p>  showmessage.setBackground(new Color(252,255,255));</p><p>  showmessage.setBorder(new

61、 TitledBorder(null, "",</p><p>  TitledBorder.DEFAULT_JUSTIFICATION,</p><p>  TitledBorder.DEFAULT_POSITION, null, null));</p><p>  JLabel chatLabel = new JLabel("聊天信

62、息:");</p><p>  Toppanel.add(chatLabel,BorderLayout.NORTH);</p><p>  Toppanel.add(leftscroll,BorderLayout.CENTER);</p><p>  Leftpanel.add(Toppanel,BorderLayout.NORTH);</p>

63、<p>  JPanel Bottompanel = new JPanel();</p><p>  Bottompanel.setLayout(new BorderLayout());</p><p>  Leftpanel.add(Bottompanel,BorderLayout.CENTER);</p><p>  JPanel toolpane

64、l = new JPanel();</p><p>  toolpanel.setBackground(new Color(240,255,255));</p><p>  toolpanel.setLayout(new GridLayout(1,0));</p><p>  toolpanel.setPreferredSize(new Dimension(0, 2

65、5));</p><p>  Bottompanel.add(toolpanel,BorderLayout.NORTH);</p><p>  toolFontButton = createButton("/1.jpg");</p><p>  toolpanel.add(toolFontButton);</p><p>

66、  toolFaceButton = createButton("/2.jpg");</p><p>  toolpanel.add(toolFaceButton);</p><p>  button = createButton("/3.jpg");</p><p>  toolpanel.add(button);</

67、p><p>  button_1 = createButton("/4.jpg");</p><p>  toolpanel.add(button_1);</p><p>  button_2 = createButton("/5.jpg");</p><p>  toolpanel.add(button_

68、2);</p><p>  button_3 = createButton("/6.jpg");</p><p>  toolpanel.add(button_3);</p><p>  button_3.addActionListener(new ActionListener(){</p><p>  public vo

69、id actionPerformed(ActionEvent event){</p><p>  fileSelect();</p><p><b>  }</b></p><p><b>  });</b></p><p>  button_4 = createButton("/7.jp

70、g");</p><p>  toolpanel.add(button_4);</p><p>  button_5 = createButton("/8.jpg");</p><p>  toolpanel.add(button_5);</p><p>  button_6 = createButton(&qu

71、ot;/9.jpg");</p><p>  toolpanel.add(button_6);</p><p>  sendmessage.setEditable(false);</p><p>  JList1.addMouseListener(new MouseAdapter() {</p><p>  public void

72、mouseClicked(MouseEvent evt) {</p><p>  JList1 = (JList)evt.getSource();</p><p>  if (evt.getClickCount() == 1) </p><p><b>  { </b></p><p><b>  }<

73、/b></p><p>  if (evt.getClickCount() == 2) </p><p>  { note("正在和"+JList1.getSelectedValue()+"連接。。。"); </p><p>  if(str.equals(""))</p><

74、;p><b>  {</b></p><p><b>  try{</b></p><p>  str =JList1.getSelectedValue().toString();</p><p>  InetAddress address = InetAddress.getByName((String)ipCarr

75、yer.elementAt(JList1.getSelectedIndex()));</p><p>  InetSocketAddress socketAddress = new InetSocketAddress(address, 7777);</p><p>  socket.connect(socketAddress);</p><p>  clientin

76、= socket.getInputStream();</p><p>  clientout = socket.getOutputStream();</p><p>  sendmessage.setEditable(true);</p><p>  flag=true;</p><p>  note("連接"+JList

77、1.getSelectedValue()+"成功!");</p><p>  new chatrecieve().start();</p><p>  sendmessage.requestFocus();</p><p>  setTitle("正在和"+JList1.getSelectedValue()+"聊天&

78、quot;);</p><p>  }catch (IOException ee) {</p><p>  JOptionPane.showMessageDialog(null,"對方不在線,請稍后再試!");</p><p>  note("連接"+JList1.getSelectedValue()+"失敗&quo

79、t;); }</p><p><b>  }</b></p><p><b>  try </b></p><p>  { if(str.equals(JList1.getSelectedValue().toString()));</p><p><b>  else</b&g

80、t;</p><p>  { str = JList1.getSelectedValue().toString();</p><p><b>  if(flag){</b></p><p><b>  try{</b></p><p>  clientout.write("over&q

81、uot;.getBytes()); clientout.flush();</p><p><b>  }</b></p><p>  catch(Exception eventb){</p><p><b>  } </b></p>

82、;<p><b>  }else</b></p><p><b>  {</b></p><p><b>  try{</b></p><p>  serverout.write("over".getBytes());

83、 serverout.flush(); </p><p><b>  }</b></p><p>  catch(Exception eventa){</p><p><b>  } </b></p><p>  } socket.close();&

84、lt;/p><p>  sendmessage.setEditable(true);</p><p>  if (socket.isConnected()) {</p><p><b>  } else {</b></p><p>  InetAddress address = InetAddress.getByName((

85、String)ipCarryer.elementAt(JList1.getSelectedIndex()));</p><p>  InetSocketAddress socketAddress = new InetSocketAddress(address, 7777);</p><p>  socket.connect(socketAddress);</p><p&

86、gt;  clientin= socket.getInputStream();</p><p>  clientout = socket.getOutputStream();</p><p>  sendmessage.setEditable(true);</p><p>  flag=true;</p><p>  note("連

87、接"+JList1.getSelectedValue()+"成功!");</p><p>  new chatrecieve().start();</p><p>  sendmessage.requestFocus();</p><p>  setTitle("正在和"+JList1.getSelectedValu

88、e()+"聊天");</p><p><b>  }</b></p><p><b>  }</b></p><p>  } catch (IOException ee) {</p><p>  JOptionPane.showMessageDialog(null,"對

89、方不在線,請稍后再試!");</p><p>  note("連接"+JList1.getSelectedValue()+"失敗");</p><p>  setTitle("");</p><p><b>  }}}});</b></p><p> 

90、 sendmessage.setBorder(new TitledBorder(null, "",</p><p>  TitledBorder.DEFAULT_JUSTIFICATION,</p><p>  TitledBorder.DEFAULT_POSITION, null, null));// 設(shè)置面版的邊框</p><p>  Bot

91、tompanel.add(bottomscroll,BorderLayout.CENTER);</p><p>  JButton sendButton = createButton("/110.jpg");</p><p>  JButton submitButton = createButton("/111.jpg");</p>&

92、lt;p>  sendButton.addActionListener(new ActionListener(){</p><p>  public void actionPerformed(ActionEvent e){</p><p>  String s = sendmessage.getText();</p><p>  if (!sendmessag

93、e.getText().trim().isEmpty()) {</p><p><b>  try {</b></p><p>  note("自己:"+s);</p><p><b>  if(flag)</b></p><p><b>  {</b>&l

94、t;/p><p>  clientout.write(s.getBytes());</p><p>  clientout.flush();</p><p>  sendmessage.setText("");</p><p><b>  }</b></p><p>  serve

95、rout.write(s.getBytes());</p><p>  serverout.flush();</p><p>  sendmessage.setText("");</p><p>  } catch (IOException ev) {</p><p>  ev.printStackTrace();<

96、/p><p><b>  }}}});</b></p><p>  sendpanel.setLayout(new FlowLayout(FlowLayout.RIGHT,1,1));</p><p>  sendpanel.add(sendButton);</p><p>  sendpanel.add(submitBut

97、ton);</p><p>  Bottompanel.add(sendpanel,BorderLayout.SOUTH);</p><p>  submitButton.addActionListener(new ActionListener(){</p><p>  public void actionPerformed(ActionEvent ep){<

98、/p><p>  System.exit(0);</p><p><b>  }});</b></p><p>  JPanel listpanel = new JPanel();</p><p>  listpanel.setLayout(new BorderLayout());</p><p> 

99、 SplitPane.setRightComponent(listpanel);</p><p>  rightscroll.setBorder(new TitledBorder(null, "",</p><p>  TitledBorder.DEFAULT_JUSTIFICATION,</p><p>  TitledBorder.DEFAU

100、LT_POSITION, null, null));</p><p>  JPanel righttop = new JPanel();</p><p>  rightscroll.setBackground(new Color(252,255,255));</p><p>  righttop.setLayout(new BorderLayout());</

101、p><p>  righttop.setPreferredSize(new Dimension(0, 250));</p><p>  listpanel.add(righttop,BorderLayout.NORTH);</p><p>  JTextField Txt = new JTextField("文件名 文件大小");</

102、p><p>  Txt.setEditable(false);</p><p>  Txt.setBackground(new Color(252,255,255));</p><p>  righttop.add(Txt,BorderLayout.SOUTH);</p><p>  righttop.add(rightscroll,Border

103、Layout.CENTER);</p><p>  JLabel listLabel = new JLabel("成員列表:");</p><p>  righttop.add(listLabel,BorderLayout.NORTH);</p><p>  JPanel rightbuttom = new JPanel();</p>

104、<p>  rightbuttom.setLayout(new BorderLayout());</p><p>  listpanel.add(rightbuttom,BorderLayout.CENTER);</p><p>  rightbuttom.add(rightscroll_2,BorderLayout.CENTER);</p><p>

105、  JButton filebutton = new JButton("文件發(fā)送按鈕");</p><p>  rightbuttom.add(filebutton,BorderLayout.SOUTH);</p><p>  filebutton.addActionListener(new ActionListener(){</p><p> 

106、 public void actionPerformed(ActionEvent event){</p><p>  if(JList1.getSelectedIndex() == -1){</p><p>  JOptionPane.showMessageDialog(null,"請選擇一名用戶!");</p><p><b>  }

107、</b></p><p>  else if(fileCarryer.getSize() == 0){</p><p>  JOptionPane.showMessageDialog(null,"請選擇要傳送的文件!");</p><p><b>  }</b></p><p><b

108、>  else{</b></p><p>  new fileSender().start();</p><p><b>  }}});</b></p><p>  addWindowListener(new WindowAdapter(){</p><p>  public void windowCl

109、osing(WindowEvent event1){</p><p><b>  if(flag){</b></p><p><b>  try{</b></p><p>  clientout.write("over".getBytes());

110、 clientout.flush();</p><p><b>  }</b></p><p>  catch(Exception eventb){</p><p><b>  } </b></p><p><b>  }</b></p&

111、gt;<p><b>  try{</b></p><p>  serverout.write("over".getBytes()); serverout.flush();</p><p><b>  }</b></p>

112、;<p>  catch(Exception eventa){</p><p>  } }}); </p><p>  clientLoader();</p><p>  new chatServer().start();</p><p>  new FileServer().start();</p>

113、<p>  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p>  setVisible(true);</p><p><b>  }</b></p><p>  private JPanel sendpanel = new JPanel() {</p><

114、;p><b>  @Override</b></p><p>  protected void paintComponent(Graphics g) {</p><p>  super.paintComponent(g);</p><p>  Graphics2D g2d = (Graphics2D) g;</p><

115、p>  g2d.drawImage(bottoml, 0, 0, null);</p><p>  g2d.setPaint(bottomcPaint);</p><p>  g2d.drawImage(bottoml, 0, 0, null);</p><p>  int x = bottoml.getWidth(null);</p><

116、p>  int y = 0;</p><p>  g2d.fillRect(x, y, 542, 39);</p><p>  g2d.drawImage(bottomr, 542, 0, null);}};</p><p>  public static void main(String[] args) </p><p><b&

117、gt;  {</b></p><p>  new test1();</p><p><b>  }</b></p><p>  private JButton createButton(String url){</p><p>  JButton butto = new JButton();</p>

118、;<p>  butto.setHideActionText(true);</p><p>  //butto.setFocusPainted(false);</p><p>  butto.setBorderPainted(false);</p><p>  butto.setContentAreaFilled(false);</p>

119、<p>  ImageIcon icon = new ImageIcon(test1.class.getResource(url));</p><p>  butto.setIcon(icon);</p><p>  return butto;</p><p><b>  }</b></p><p>  pub

120、lic void fileSelect(){</p><p>  FileDialog fd = new FileDialog(this,"file load dialog",FileDialog.LOAD);</p><p>  fd.setVisible(true);</p><p>  boolean repeat = false;<

121、/p><p>  String dir = fd.getDirectory() + fd.getFile();</p><p>  if(dir.equals("nullnull")){</p><p><b>  }</b></p><p><b>  else{</b></

122、p><p>  for(int i = 0;i < realFileCarryer.size();i++){</p><p>  if(((File)realFileCarryer.elementAt(i)).getPath().equals(dir)){</p><p>  repeat = true;</p><p><b>

123、  }</b></p><p><b>  }</b></p><p>  if(repeat == false){</p><p>  File file = new File(dir);</p><p>  realFileCarryer.addElement(file);</p><

124、p>  fileCarryer.addElement(fd.getFile() + " 長度:" + file.length());</p><p>  sendNameCarryer.addElement(fd.getFile());</p><p>  fileLength.addElement(file.length());</p><

125、;p><b>  }else{</b></p><p>  JOptionPane.showMessageDialog(null,"已存在此文件!");</p><p><b>  }}}</b></p><p>  class chatServer extends Thread{</p&g

126、t;<p>  public void run(){</p><p>  try{ServerSocket server = new ServerSocket(7777);</p><p>  while (true) {</p><p>  Socket you = server.accept();</p><p>  if

127、(you != null)</p><p><b>  so=you;</b></p><p>  sendmessage.setEnabled(true);</p><p>  note(you.getInetAddress()+" 已和你連接成功");</p><p>  sendmessage.

128、requestFocus();</p><p>  sendmessage.setEditable(true);</p><p>  setTitle("正在和"+you.getInetAddress()+"聊天");</p><p>  serverin = you.getInputStream();</p>

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論