java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告.doc

上傳人:good****022 文檔編號(hào):116666577 上傳時(shí)間:2022-07-06 格式:DOC 頁(yè)數(shù):57 大?。?37KB
收藏 版權(quán)申訴 舉報(bào) 下載
java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告.doc_第1頁(yè)
第1頁(yè) / 共57頁(yè)
java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告.doc_第2頁(yè)
第2頁(yè) / 共57頁(yè)
java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告.doc_第3頁(yè)
第3頁(yè) / 共57頁(yè)

下載文檔到電腦,查找使用更方便

13 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告.doc》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《java課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告.doc(57頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、課 程 設(shè) 計(jì) 報(bào) 告學(xué)院、系:吉林大學(xué)珠海學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系專(zhuān)業(yè)名稱(chēng):計(jì)算機(jī)科學(xué)與技術(shù)課程設(shè)計(jì)科目java程序課程設(shè)計(jì)學(xué)生學(xué)號(hào):04120420學(xué)生姓名:何星指導(dǎo)教師:董鑫正完成時(shí)間:2014 年 3月- 5月題目:20. 模仿QQ的部分功能,建立一個(gè)功能全面的網(wǎng)絡(luò)聊天程序,可以實(shí)現(xiàn)多人聊天,并可以保存聊天記錄。一、設(shè)計(jì)任務(wù)與目標(biāo) 1)多線(xiàn)程聊天程序2)可以接收多人聊天3)可以發(fā)送文件4)可以發(fā)送圖片5)可以保存聊天記錄6)要求界面美觀(guān)、布局合理、功能操作簡(jiǎn)便二、方案設(shè)計(jì)與論證網(wǎng)絡(luò)編程的目的就是指直接或間接地通過(guò)網(wǎng)絡(luò)協(xié)議與其他計(jì)算機(jī)進(jìn)行通訊。網(wǎng)絡(luò)編程中有兩個(gè)主要的問(wèn)題,一個(gè)是如何準(zhǔn)確的定

2、位網(wǎng)絡(luò)上一臺(tái)或多臺(tái)主機(jī),另一個(gè)就是找到主機(jī)后如何可靠高效的進(jìn)行數(shù)據(jù)傳輸。在TCP/IP協(xié)議中IP層主要負(fù)責(zé)網(wǎng)絡(luò)主機(jī)的定位,數(shù)據(jù)傳輸?shù)穆酚?,由IP地址可以唯一地確定Internet上的一臺(tái)主機(jī)。而TCP層則提供面向應(yīng)用的可靠的或非可靠的數(shù)據(jù)傳輸機(jī)制,這是網(wǎng)絡(luò)編程的主要對(duì)象,一般不需要關(guān)心IP層是如何處理數(shù)據(jù)的。目前較為流行的網(wǎng)絡(luò)編程模型是客戶(hù)機(jī)/服務(wù)器(C/S)結(jié)構(gòu)。即通信雙方一方作為服務(wù)器等待客戶(hù)提出請(qǐng)求并予以響應(yīng)??蛻?hù)則在需要服務(wù)時(shí)向服務(wù)器提出申請(qǐng)。服務(wù)器一般作為守護(hù)進(jìn)程始終運(yùn)行,監(jiān)聽(tīng)網(wǎng)絡(luò)端口,一旦有客戶(hù)請(qǐng)求,就會(huì)啟動(dòng)一個(gè)服務(wù)進(jìn)程來(lái)響應(yīng)該客戶(hù),同時(shí)自己繼續(xù)監(jiān)聽(tīng)服務(wù)端口,使后來(lái)的客戶(hù)也能及時(shí)得

3、到服務(wù)。三、程序框圖或流程圖,程序清單與調(diào)用關(guān)系客戶(hù)端發(fā)送與接收事件處理定義常用方法Run()接收并處理消息Actionperformed()按鈕事件處理Insert()插入信息到自己的聊天區(qū)Keypressed()處理并發(fā)送消息itemStateChanged()判斷私聊Putout()保存聊天記錄Sendfilethread發(fā)送文件Shutdown()關(guān)閉窗口,向服務(wù)器發(fā)送離線(xiàn)請(qǐng)求Acceptfilethread接收文件createpopupMenu()清空聊天區(qū)調(diào)用關(guān)系Run()in.readLine()接受讀取信息Split(“&”)處理信息,用于判斷與識(shí)別Plist.listMode

4、l.addElement()向好友列表中加入好友Insert()信息插入自身聊天去This.acceptfileArea.setText()在接收文件曲線(xiàn)是要接收的文件Putout()聊天記錄輸出為文本以保存聊天記錄Keypressed()inMsgField.getText()在輸入框中獲取信息Split(“&”)處理信息Out.println()發(fā)送信息Insert()插入信息到自身聊天區(qū)Putout()保存聊天記錄SendfilethreadOut.println()發(fā)送客戶(hù)信息和請(qǐng)求tos.read()從文件中讀取數(shù)據(jù)doc.write()將數(shù)據(jù)寫(xiě)入網(wǎng)絡(luò)緩沖區(qū)Inset()插入信息到自

5、身聊天區(qū)Acceptfilethreadfile.createNewFile()將接受的文件重命名in.read()從網(wǎng)絡(luò)緩沖區(qū)讀數(shù)據(jù)raf.write()數(shù)據(jù)寫(xiě)入文件服務(wù)器調(diào)用關(guān)系定義方法Run()In.readline()接收信息sendOne()Split(“&”)判斷處理信息sendAll()群發(fā)sendAll()deleteConnection()從用戶(hù)組中刪除用戶(hù)addConnection()加入用戶(hù)到用戶(hù)組addConnection()Updatalist()更新好友列表sendOne()私聊deleteConnection()Updatalist()cp.getName()獲取

6、用戶(hù)姓名cp.getSex()獲取用戶(hù)性別Out.println()向每個(gè)用戶(hù)發(fā)送每個(gè)用戶(hù)信息發(fā)送文件處理并發(fā)送信息insert()插入信息到自身聊天區(qū)doc.write()寫(xiě)入網(wǎng)絡(luò)緩沖區(qū)fos.read()從文件讀取數(shù)據(jù)Out.println()發(fā)送客戶(hù)信息和請(qǐng)求Sendfilethread發(fā)送文件線(xiàn)程Actionperformed()按鈕事件處理sendfileArea.getText()獲取文件名ChatFrame()客戶(hù)端界面Insert()插入信息到自己聊天區(qū)Out.println()輸出信息inMsgField.getText()獲取輸入框信息Putout()保存聊天記錄ChatF

7、rame()客戶(hù)端界面Keypressed()處理并發(fā)送信息YNYShoutdown()Link()If(e.getSource=ok)ChatFrame()客戶(hù)端界面Connect()登錄界面If(e.getSource()=cancell)接收客戶(hù)端信息向客戶(hù)端發(fā)送信息Updatalist()更新好友列表deleteConnection()從用戶(hù)組中刪除用戶(hù) addConnection()用戶(hù)組中加入用戶(hù)Split(“&”)判斷處理信息sendOne()私聊sendAll()群發(fā)In.readline()接收信息run()處理和中轉(zhuǎn)信息main()開(kāi)啟線(xiàn)程,啟動(dòng)服務(wù)器,監(jiān)聽(tīng)客戶(hù)端接收文件接

8、收信息Raf.write()數(shù)據(jù)寫(xiě)入文件In.read()從網(wǎng)絡(luò)緩沖區(qū)讀數(shù)據(jù)file.createnewFile()接收并重命名文件Acceptfilethread接收文件線(xiàn)程Putout()保存聊天記錄this.acceptfileArea.setText()顯示要接收的文件到接收文件區(qū)Insert()信息插入到自身聊天區(qū)Plist.listModel.addElement()向好友列表中加入好友in.readLine()接受讀取信息Run()接收并處理信息ChatFrame()客戶(hù)端界面ChatFrame()客戶(hù)端界面4、 全部源程序清單package chat;/import Clien

9、t;import javax.swing.JFileChooser;import javax.swing.JProgressBar;import java.util.Date;import java.util.Calendar;import javax.swing.JTextArea; /import RTFReceiveFrame;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.Border;import javax.swing.text.BadLocationE

10、xception;import javax.swing.text.SimpleAttributeSet;import javax.swing.text.StyleConstants;import javax.swing.text.StyledDocument;import .*;import java.io.*;import .Socket;SuppressWarnings(unused)public class ChatFrame extends JFrame implements ActionListener, ItemListener,Runnable, KeyListenersendf

11、ilethread sendthread;/ 發(fā)送文件線(xiàn)程;acceptfilethread acceptthread;/ 接收文件線(xiàn)程Socket acceptfilesocket; / 接收文件傳輸連接Socket sendfilesocket; / 發(fā)送文件傳輸連接ServerSocket fileserver; / 傳輸文件服務(wù)器String filemsg = null; / 保存文件輸入流String sendfilename = null;/ 保存欲發(fā)送的文件名String IP;/ 保存本機(jī)IP= InetAddress.getLocalHost();/Boolean acce

12、ptboolean = false;Boolean sendboolean = false;int port = 6200;JProgressBar acceptProgressbar;/ 接收進(jìn)度條JProgressBar sendProgressbar; / 發(fā)送進(jìn)度條private Box leftbox = null;private Box rightbox = null;private Box leftrightbox = null;private Box rightleftbox = null;private JButton sendfile; / 發(fā)送文件按鈕private JB

13、utton cancelsendfile; / 取消發(fā)送文件按鈕private JButton acceptfile; / 接收文件按鈕private JButton refusefile; / 拒絕接收文件按鈕private MyTextArea sendfileArea = null; / 發(fā)送文件顯示區(qū)private JTextPane acceptfileArea = null; / 接收文件顯示區(qū)private static final long serialVersionUID = 1L;/ *菜單欄*private Box box = null; / 放輸入組件的容器privat

14、e JComboBox fontName = null, fontSize = null, fontStyle = null,fontColor = null;/ sendings = null;/ fontBackColor = null;private StyledDocument doc = null;private JFileChooser jfc;/ 文件保存路徑選擇器private JTextPane commonArea = null; / 公共發(fā)言區(qū)private JTextPane myMsgArea = null;/ 我的頻道發(fā)言區(qū)public JComboBox perp

15、onsComboBox; / 下拉菜單private JTextArea inMsgField; / 發(fā)言輸入框private JCheckBox privateTalk;/ 私聊checkboxprivate boolean privateTalkFlag = false; / 是否是私聊,默認(rèn)值為假private JButton sentButton; / 發(fā)送消息按鈕private JMenuItem menuItem;private JMenuItem cMenuItem;public BufferedReader in;public PrintWriter out;public St

16、ring myName;private String withWho = 所有人;String outmsg;/ 發(fā)送的信息String mywords;/ 要說(shuō)的話(huà)JPanel centerPanel;JScrollPane commonAreaScroll;JScrollPane myMsgAreaScroll;JScrollPane inMsgFieldScroll;public PList plist;public ChatFrame(String host)super(host + 的聊天室);try / 使用Windows的界面風(fēng)格UIManager.setLookAndFeel(

17、com.sun.java.swing.plaf.windows.WindowsLookAndFeel); catch (Exception e)e.printStackTrace();myName = host;plist = new PList(this);tryInetAddress addr = InetAddress.getLocalHost();IP = addr.getHostAddress().toString();/ 獲得本機(jī)IP catch (Exception e)System.out.print(無(wú)法獲取本地主機(jī));/ System.out.println(本機(jī)的ip=

18、+ inet.getHostAddress();acceptProgressbar = new JProgressBar();acceptProgressbar.setOrientation(JProgressBar.HORIZONTAL);acceptProgressbar.setValue(0);acceptProgressbar.setStringPainted(true);sendProgressbar = new JProgressBar();sendProgressbar.setOrientation(JProgressBar.HORIZONTAL);sendProgressbar

19、.setValue(0);sendProgressbar.setStringPainted(true);/ *聊天室右側(cè)*/sendfile = new JButton(發(fā)送文件); cancelsendfile = new JButton(取消發(fā)送);acceptfile = new JButton(接收文件); refusefile = new JButton(拒絕文件); / 拒絕接收文件按鈕acceptfileArea = new JTextPane(); / 接收文件顯示區(qū)acceptfileArea.setEditable(false); / 不可從外部寫(xiě)sendfileArea

20、= new MyTextArea(); / 發(fā)送文件顯示區(qū)sendfileArea.setEditable(false);leftrightbox = Box.createHorizontalBox(); / 行結(jié)構(gòu)leftrightbox.add(acceptfile, BorderLayout.WEST);leftrightbox.add(refusefile, BorderLayout.EAST);Box rightabove = Box.createVerticalBox();rightabove.add(leftrightbox);rightabove.add(acceptProgr

21、essbar);rightbox = Box.createVerticalBox();/ 豎結(jié)構(gòu)rightbox.add(Box.createVerticalStrut(10);rightbox.add(rightabove);rightbox.add(Box.createVerticalStrut(10);JScrollPane inMsgFieldScroll1 = new JScrollPane(acceptfileArea);inMsgFieldScroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NE

22、EDED);inMsgFieldScroll1.setBorder(BorderFactory.createTitledBorder(待接收的文件);inMsgFieldScroll1.setBackground(new Color(188, 193, 199);rightbox.add(inMsgFieldScroll1, BorderLayout.CENTER);rightbox.setBackground(new Color(250, 0, 2);rightbox.add(Box.createVerticalStrut(10);rightleftbox = Box.createHoriz

23、ontalBox();rightleftbox.add(sendfile, BorderLayout.WEST);rightleftbox.add(cancelsendfile, BorderLayout.EAST);Box rightmiddle = Box.createVerticalBox();rightmiddle.add(rightleftbox);rightmiddle.add(sendProgressbar);rightbox.add(rightmiddle, BorderLayout.CENTER);JScrollPane inMsgFieldScroll2 = new JSc

24、rollPane(sendfileArea);inMsgFieldScroll2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);inMsgFieldScroll2.setBorder(BorderFactory.createTitledBorder(欲發(fā)送的文件);inMsgFieldScroll2.setBackground(new Color(188, 193, 199);rightbox.add(inMsgFieldScroll2, BorderLayout.CENTER);rightbox.se

25、tBackground(new Color(0, 0, 255);/ *聊天室頂層*/JPanel upperPanel = new JPanel();String str_name = 宋體, 黑體, Dialog, Gulim ;String str_Size = 12, 14, 18, 22, 30, 40 ;String str_Style = 常規(guī), 斜體, 粗體, 粗斜體 ;String str_Color = 黑色, 紅色, 藍(lán)色, 黃色, 綠色 ;fontName = new JComboBox(str_name); / 字體名稱(chēng)fontSize = new JComboBox

26、(str_Size); / 字號(hào)fontStyle = new JComboBox(str_Style); / 樣式fontColor = new JComboBox(str_Color); / 顏色box = Box.createVerticalBox(); / 豎結(jié)構(gòu)Box box_1 = Box.createHorizontalBox(); / 橫結(jié)構(gòu)Box box_2 = Box.createVerticalBox(); / 橫結(jié)構(gòu)box.add(box_1);box.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8); / 8個(gè)

27、的邊距box_1.add(new JLabel(字體:); / 加入標(biāo)簽box_1.add(fontName); / 加入組件box_1.add(Box.createHorizontalStrut(8); / 間距box_1.add(new JLabel(樣式:);box_1.add(fontStyle);box_1.add(Box.createHorizontalStrut(8);box_1.add(new JLabel(字號(hào):);box_1.add(fontSize);box_1.add(Box.createHorizontalStrut(8);box_1.add(new JLabel(顏

28、色:);box_1.add(fontColor);box_1.add(Box.createHorizontalStrut(8);box_1.add(Box.createHorizontalStrut(8);upperPanel.add(box, BorderLayout.SOUTH);/ *中間聊天室兩個(gè)窗口*/Border brd = BorderFactory.createMatteBorder(/ 邊框修飾色2, 2, 2, 1, new Color(125, 161, 253);centerPanel = new JPanel(new BorderLayout();commonArea

29、 = new JTextPane(); / 公共言論區(qū)commonArea.setBorder(brd);commonArea.setEditable(false); / 不可編輯commonArea.getScrollableUnitIncrement(new Rectangle(10, 20),SwingConstants.VERTICAL, -2);commonAreaScroll = new JScrollPane(commonArea);commonAreaScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR

30、_ALWAYS);/ 設(shè)置滾動(dòng)條什么時(shí)候出現(xiàn)commonAreaScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);commonAreaScroll.setBorder(BorderFactory.createTitledBorder(群聊區(qū));box_2.add(commonAreaScroll);box_2.add(Box.createVerticalStrut(2);myMsgArea = new JTextPane(); / 我的發(fā)言myMsgArea.setBorder

31、(brd);myMsgArea.setEditable(false);myMsgAreaScroll = new JScrollPane(myMsgArea);myMsgAreaScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);myMsgAreaScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);myMsgAreaScroll.setBorder(BorderFactory.creat

32、eTitledBorder(悄悄話(huà));box_2.add(myMsgAreaScroll);centerPanel.add(box_2);/ *輸入發(fā)送區(qū)*JPanel centerLowerPanel = new JPanel(new BorderLayout();JPanel tempPanel1 = new JPanel(new BorderLayout();JPanel tempPanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT);JLabel withWho = new JLabel(對(duì));perponsComboBox = new

33、JComboBox();perponsComboBox.addItem(所有人);privateTalk = new JCheckBox(私聊);inMsgField = new JTextArea(3, 2);inMsgField.setBorder(brd);inMsgField.setBackground(new Color(248, 243, 209);/ 設(shè)置聊天框體的顏色inMsgField.addKeyListener(this);sentButton = new JButton(發(fā)送);inMsgFieldScroll = new JScrollPane(inMsgField)

34、;inMsgFieldScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);inMsgFieldScroll.setBorder(BorderFactory.createTitledBorder(編輯區(qū));tempPanel1.add(inMsgFieldScroll, BorderLayout.CENTER);sentButton.setBackground(Color.WHITE);tempPanel2.add(withWho);tempPanel2.add(new JLabel( );tempPa

35、nel2.add(perponsComboBox);tempPanel2.add(new JLabel( );tempPanel2.add(privateTalk);tempPanel2.add(new JLabel( );tempPanel2.add(new JLabel( );tempPanel2.add(sentButton);tempPanel2.add(new JLabel();centerLowerPanel.add(tempPanel1, BorderLayout.CENTER);centerLowerPanel.add(tempPanel2, BorderLayout.SOUT

36、H);centerPanel.add(centerLowerPanel, BorderLayout.SOUTH);/ * 最下面的面板(South)*/JLabel BordBottomLabel = new JLabel();Icon BordBottom = new ImageIcon(imagesBordBottom.gif);BordBottomLabel.setIcon(BordBottom);leftbox = Box.createVerticalBox();/ 豎結(jié)構(gòu)leftbox.add(upperPanel, BorderLayout.NORTH);leftbox.add(c

37、enterPanel, BorderLayout.CENTER);leftbox.add(BordBottomLabel, BorderLayout.SOUTH);this.add(leftbox, BorderLayout.CENTER);this.add(rightbox, BorderLayout.EAST);sentButton.addActionListener(this);/ 監(jiān)聽(tīng)發(fā)送按鈕sendfile.addActionListener(this);/ 監(jiān)聽(tīng)文件發(fā)送按鈕acceptfile.addActionListener(this);/ 監(jiān)聽(tīng)文件接收按鈕refusefile

38、.addActionListener(this);/ 監(jiān)聽(tīng)文件拒絕按鈕cancelsendfile.addActionListener(this);/ 監(jiān)聽(tīng)取消發(fā)送文件perponsComboBox.addActionListener(this);/ 監(jiān)聽(tīng)下拉菜單privateTalk.addItemListener(this);/ 監(jiān)聽(tīng)多選框狀態(tài)this.createPopupMenu();inMsgField.requestFocus();this.setLocation(450, 50); / 居中this.setSize(600, 600);this.addWindowListener

39、(new WindowAdapter() / 匿名類(lèi) 監(jiān)聽(tīng)窗口關(guān)閉時(shí)間public void windowClosing(WindowEvent event)shutDown(););this.setVisible(true);public void createPopupMenu()JPopupMenu popup = new JPopupMenu();menuItem = new JMenuItem(清空群聊區(qū)信息);menuItem.addActionListener(this);popup.add(menuItem); / 鼠標(biāo)右擊顯示cMenuItem = new JMenuItem

40、(清空私聊區(qū)信息);cMenuItem.addActionListener(this);popup.add(cMenuItem);/ Add listener to the text area so the popup menu can come up.MouseListener popupListener = new PopupListener(popup);/ PopupListener繼承MouseAdaptercommonArea.addMouseListener(popupListener);myMsgArea.addMouseListener(popupListener);publ

41、ic void init(BufferedReader in, PrintWriter out)this.in = in;this.out = out;Thread th = new Thread(this);th.start();public void run()String inmsg;acceptthread = new acceptfilethread();while (true)tryif (inmsg = in.readLine() != null)if (inmsg.startsWith(old)String userInfo = inmsg.split(&);plist.lis

42、tModel.addElement(userInfo1 + + userInfo2 + ); / 更新用戶(hù)列表 else if (inmsg.startsWith(new) / 接收第一次服務(wù)器發(fā)送歡迎信息String userInfo = inmsg.split(&);plist.listModel.addElement(userInfo1 + + userInfo2 + ); / 更新用戶(hù)列表 new & zhangsan &insert(commonArea, userInfo1 + 上線(xiàn)了); putout(gong.txt,userInfo1 + 上線(xiàn)了);insert(myMsgA

43、rea, userInfo1 + 上線(xiàn)了);putout(si.txt,userInfo1 + 上線(xiàn)了); else if (inmsg != null) / 一般消息String sendfile = inmsg.split(&);if (pareTo(cancelsendfile) = 0)insert(myMsgArea, sendfile1 + 取消了文件發(fā)送);putout(si.txt,sendfile1 + 取消了文件發(fā)送);acceptboolean = false;this.acceptfile.setEnabled(true);this.acceptfileArea.set

44、Text(); else if (pareTo(sendfile) = 0) / 如果是傳送文件請(qǐng)求this.acceptfileArea.setText(sendfile2);insert(myMsgArea, sendfile1 + 發(fā)來(lái)文件);filemsg = inmsg; else if (pareTo(acceptfile) = 0) / 如果是傳送文件請(qǐng)求insert(myMsgArea, sendfile1 + 接收了你發(fā)的文件);putout(si.txt,sendfile1 + 接收了你發(fā)的文件); else if (pareTo(refusefile) = 0) / 如果

45、是傳送文件請(qǐng)求insert(myMsgArea, sendfile1 + 拒絕了你發(fā)的文件);putout(si.txt,sendfile1 + 拒絕了你發(fā)的文件);sendboolean = false;this.sendfile.setEnabled(true);this.sendfileArea.setText(); else if (pareTo(withWho) = 0)if (sendfile2.equals(myName) / 如果是發(fā)給自己的消息insert(myMsgArea, sendfile1 + 對(duì)+ sendfile2 + 說(shuō): + sendfile3);putout

46、(si.txt,sendfile1 + 對(duì)+ sendfile2 + 說(shuō): + sendfile3); / 顯示到我的頻道insert(commonArea, sendfile1 + 對(duì) + sendfile2+ 說(shuō): + sendfile3);putout(gong.txt,sendfile1 + 對(duì) + sendfile2 + 說(shuō): + sendfile3); else if (inmsg.startsWith(privateTalk)String showmsg = inmsg.split(&);if (showmsg1.equals(myName)/ 如果接收到的是我自己發(fā)送的消息in

47、sert(commonArea, 您對(duì) + showmsg2 + 說(shuō): + showmsg3);putout(gong.txt,您對(duì) + showmsg2 + 說(shuō): + showmsg3); else / 接收到的是別人發(fā)給我的消息(悄悄話(huà))insert(myMsgArea, + showmsg1 + 對(duì)您說(shuō): + showmsg3);putout(si.txt, + showmsg1 + 對(duì)您說(shuō): + showmsg3); elseinsert(commonArea, inmsg); catch (Exception ee)ee.printStackTrace();insert(myMsgA

48、rea, 與服務(wù)器中斷,請(qǐng)重新登錄!);in = null;out = null;return;/ /*發(fā)送文件線(xiàn)程*/class sendfilethread extends Thread/ ActionListenerkhhkh壓郁sendfilethread()/ 構(gòu)造函數(shù)public void run()File file = new File(sendfilename);FileInputStream fos = null;tryfos = new FileInputStream(file); catch (IOException e1)System.out.print(發(fā)送文件打開(kāi)

49、文件異常);out.println(sendfile + & + withWho + &+ sendfileArea.getText() + & + IP + & + port + &+ (int) file.length() / 1000);out.flush();tryfileserver = new ServerSocket(port); catch (IOException e1)System.out.print(發(fā)送文件創(chuàng)建服務(wù)器錯(cuò)誤異常);trysendfilesocket = fileserver.accept(); catch (IOException e1)System.ou

50、t.print(發(fā)送文件監(jiān)聽(tīng)連接異常);sendProgressbar.setMaximum(int) file.length() / 1000); / :sendProgressbar.setMinimum(0);int filetemp = 0;OutputStream netOut = null;OutputStream doc = null;trynetOut = sendfilesocket.getOutputStream();doc = new DataOutputStream(new BufferedOutputStream(netOut); catch (IOException

51、 e1)System.out.print(發(fā)送文件創(chuàng)建網(wǎng)絡(luò)輸出流并提供數(shù)據(jù)包裝器異常);byte buf = new byte8000000;int num = -1;trynum = fos.read(buf);/ 讀文件 catch (IOException e1)System.out.print(發(fā)送文件讀文件異常);while (num != (-1) & sendboolean)/ 是否讀完文件filetemp = filetemp + num / 1000;sendProgressbar.setValue(filetemp);trydoc.write(buf, 0, num);/

52、讀文件doc.flush(); catch (IOException e1)System.out.print(發(fā)送文件把文件數(shù)據(jù)寫(xiě)出網(wǎng)絡(luò)緩沖區(qū)異常);trynum = fos.read(buf);/ 繼續(xù)從文件中讀取數(shù)據(jù) catch (IOException e1)System.out.print(發(fā)送文件繼續(xù)從文件中讀取數(shù)據(jù)異常);if (num = (-1) & sendboolean)insert(myMsgArea, 文件發(fā)送完畢); elseinsert(myMsgArea, 文件發(fā)送中斷);sendProgressbar.setValue(0);tryfos.close();doc

53、.close(); catch (IOException e1)System.out.print(發(fā)送文件關(guān)閉讀或?qū)懏惓?;trysendfilesocket.close();fileserver.close(); catch (IOException e1)System.out.print(發(fā)送文件關(guān)閉連接或服務(wù)器異常);sendfileArea.setText();sendfile.setEnabled(true);return;/ /*接收文件線(xiàn)程*/public class acceptfilethread extends Threadprivate String ip, filepath;int port;public void ipport(String ipp, int portt, String filepathh)ip = ipp;port = portt;fi

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!