版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 1 前言1</b></p><p><b> 2 需求分析1</b></p><p> 2.1 任務和要求1</p><p> 2.2 運行環(huán)境1</p><p>
2、 2.3 開發(fā)工具1</p><p><b> 3 分析和設計1</b></p><p> 3.1 系統(tǒng)分析及設計思路1</p><p> 3.2 主要類圖1</p><p> 3.3 系統(tǒng)流程7</p><p> 4 具體代碼實現(xiàn)8</p><p>
3、 5 課程設計總結25</p><p> 5.1 程序運行結果或預期運行結果25</p><p> 5.2 設計結論27</p><p><b> 參考文獻27</b></p><p><b> 致 謝29</b></p><p><b>
4、1 前言</b></p><p> 編寫一個程序來模擬實現(xiàn)局域網(wǎng)的聊天和文件傳輸,通過編寫一個文件服務器程序和一個聊天服務器程序來監(jiān)聽文件的發(fā)送和聊天,當有文件傳輸或聊天事件發(fā)生時,如果同意事件的進行,則通過輸入流、輸出流對文件或聊天信息進行傳送,那么接收的,如果是文件就選擇保存路徑保存,如果是聊天信息就再聊天對話框的信息顯示欄里顯示,當有一方終止連接,能告知對方,整個事件結束。</p>
5、<p><b> 2 需求分析</b></p><p><b> 2.1 任務和要求</b></p><p> 編寫一個程序來實現(xiàn)局域網(wǎng)的聊天和文件傳輸,具體要求如下:</p><p> (1)具有一個較好的可視化界面,大體做到美觀、大方。</p><p> (2)能進行聊天
6、和文件傳輸,在傳送文件時,接收方要有選擇接不接收的權力。</p><p> ?。?)在聊天時,如果沒有和對方連接成功,信息發(fā)送框為不可編輯狀態(tài)。</p><p> ?。?)當在成員列表中雙擊某個成員時,系統(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 分析和設計</b></p><p> 3.1 系統(tǒng)分析及設計思路</p><p> 3.1.1系統(tǒng)的理論基礎</p><p> ?。?)TCP/IP協(xié)議</p><p> 網(wǎng)絡編程中兩個
9、主要的問題,一個是如何準確的定位網(wǎng)絡上一臺或多臺主機,另一個就是找到主機后如何可靠高效的進行數(shù)據(jù)傳輸。</p><p> 在TCP/IP協(xié)議中IP層主要負責網(wǎng)絡主機的定位,數(shù)據(jù)傳輸?shù)穆酚?,由IP地址可以唯一地確定Internet上的一臺主機。</p><p> 而TCP層則提供面向應用的可靠(tcp)的或非可靠(UDP)的數(shù)據(jù)傳輸機制,這是網(wǎng)絡編程的主要對象,一般不需要關心IP層是如何
10、處理數(shù)據(jù)的。</p><p> 目前較為流行的網(wǎng)絡編程模型是客戶機/服務器(C/S)結構。即通信雙方一方作為服務器等待客戶提出請求并予以響應??蛻魟t在需要服務時向服務器提 出申請。服務器一般作為守護進程始終運行,監(jiān)聽網(wǎng)絡端口,一旦有客戶請求,就會啟動一個服務進程來響應該客戶,同時自己繼續(xù)監(jiān)聽服務端口,使后來的客戶也 能及時得到服務。</p><p> ?。?)基于Socket的java網(wǎng)
11、絡編程</p><p> Socket所支持的協(xié)議種類也不光TCP/IP一種,因此兩者之間是沒有必然聯(lián)系的。在Java環(huán)境下,Socket編程主要是指基于TCP/IP協(xié)議的網(wǎng)絡編程。</p><p> Server端Listen(監(jiān)聽)某個端口是否有連接請求,Client端向Server 端發(fā)出Connect(連接)請求,Server端向Client端發(fā)回Accept(接受)消息。一個
12、連接就建立起來了。Server端和Client 端都可以通過Send,Write等方法與對方通信。</p><p> 對于一個功能齊全的Socket,都要包含以下基本結構,其工作過程包含以下四個基本的步驟:</p><p> ?、?創(chuàng)建Socket;</p><p> ?、?打開連接到Socket的輸入/出流;</p><p> ?、?按照
13、一定的協(xié)議對Socket進行讀/寫操作;</p><p> ?、?關閉Socket.(在實際應用中,并未使用到顯示的close,雖然很多文章都推薦如此,不過在我的程序中,可能因為程序本身比較簡單,要求不高,所以并未造成什么影響。)</p><p> 3.1.2系統(tǒng)的設計</p><p> 本系統(tǒng)大體由對話框模塊、文件服務器模塊、聊天服務器模塊、文件發(fā)送模塊、文件
14、接收模塊、聊天信息發(fā)送模塊、聊天信息接收的模塊、信息打印顯示模塊、文件 選擇模塊、成員列表裝載模塊等。下面列出部分設計:</p><p> ?。?)文件發(fā)送服務器的設計</p><p> 文件服務器是用來監(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> ?。?)文件接收的設計</p><p> 文件接收是把通過socket流發(fā)來的字節(jié)流,還原成相應的文件,主要代碼為:&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> (3)文件選擇模塊設計</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));// 設置面版的邊框</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));// 設置面版的邊框</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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 局域網(wǎng)聊天程序java課程設計
- 基于java的局域網(wǎng)聊天系統(tǒng)-課程設計報告
- 基于java的局域網(wǎng)聊天系統(tǒng)-課程設計報告
- java課程設計--局域網(wǎng)聊天程序的設計與實現(xiàn)
- java課程設計---局域網(wǎng)聊天程序的設計與實現(xiàn)
- java課程設計---局域網(wǎng)聊天程序的設計與實現(xiàn)
- 基于局域網(wǎng)的文件傳輸系統(tǒng)的設計與實現(xiàn).doc
- 基于局域網(wǎng)的文件傳輸系統(tǒng)的設計與實現(xiàn)畢業(yè)設計
- 局域網(wǎng)文件傳輸與消息發(fā)送
- ftp文件傳輸課程設計
- 畢業(yè)論文---基于局域網(wǎng)的文件傳輸系統(tǒng)的設計與實現(xiàn)
- ftp文件傳輸課程設計
- 文件傳輸與聊天系統(tǒng)設計
- [delphi畢設]基于局域網(wǎng)的文件傳輸系統(tǒng)的設計與實現(xiàn)
- 軟件課程設計---局域網(wǎng)聊天程序
- 局域網(wǎng)課程設計--宿舍小型局域網(wǎng)組建
- 基于藍牙無線局域網(wǎng)的文件傳輸系統(tǒng)的研究與設計.pdf
- 局域網(wǎng)qq課程設計
- 局域網(wǎng)組建課程設計
- 局域網(wǎng)下的java聊天軟件
評論
0/150
提交評論