計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù)大作業(yè)_第1頁
計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù)大作業(yè)_第2頁
計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù)大作業(yè)_第3頁
計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù)大作業(yè)_第4頁
計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù)大作業(yè)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù)實(shí) 訓(xùn) 報(bào) 告基于UDP協(xié)議多客戶有圖形用戶界面的網(wǎng)上聊天程序 UDP-based protocol multi-client with a graphical user interface, online chat program班 級: 信息管理與信息系統(tǒng)11-2 姓 名: 張麗 張倩 費(fèi)詠梅 學(xué) 號: 伊犁師范學(xué)院電子與信息工程學(xué)院1 實(shí)驗(yàn)?zāi)康撵柟趟鶎W(xué)的Java語言基礎(chǔ)知識,增進(jìn)Java語言的編輯基本功,拓展常用類庫的應(yīng)用,了解Java網(wǎng)絡(luò)程序設(shè)計(jì)的思路和方法,熟練掌握UDP協(xié)議編寫程序的設(shè)計(jì)方法,掌握基本網(wǎng)絡(luò)包的使用方法,熟練使用Socket以及多線程

2、。2 實(shí)驗(yàn)內(nèi)容運(yùn)用Java程序編寫聊天室,實(shí)現(xiàn)一個(gè)基于UDP協(xié)議的簡單的聊天程序,支持多人聊天并且客戶端具有圖形化用戶界面。程序?qū)崿F(xiàn)了聊天室的基本功能,其中有:1.啟動服務(wù)器。2.啟動登錄界面。3.進(jìn)入客戶端界面。4.發(fā)送信息。5.離開客戶端界面。6.關(guān)閉服務(wù)器。三、實(shí)驗(yàn)環(huán)境操作系統(tǒng):Windows平臺。測試環(huán)境:Eclipse。四、實(shí)驗(yàn)步驟 1創(chuàng)建項(xiàng)目,組織文件 啟動Eclipse ,建立項(xiàng)目、包及各類,鍵入代碼,操作結(jié)果如圖1所示。圖1項(xiàng)目和文件2. 運(yùn)行程序進(jìn)行測試(1)首先運(yùn)行Server.java,打開“聊天室服務(wù)器”。服務(wù)器IP地址為如圖2所示。圖2服務(wù)器控制

3、臺(2) 服務(wù)器監(jiān)聽是否有新聊天者連接,如果沒有,一直等待。如圖3所示。圖3 服務(wù)器等待(3)運(yùn)行客戶端程序client.java,打開“多人聊天室“界面,客戶端1的IP地址為客戶端2的IP地址為9,如圖4所示。圖4聊天室客戶端界面(4) 在“多人聊天室”界面輸入框輸入聊天信息。如圖5所示。圖5在輸入框輸入聊天信息(5)在“多人聊天室”界面發(fā)送信息。如圖6所示。圖6發(fā)送聊天信息(6) 服務(wù)器端顯示兩個(gè)客戶端聊天內(nèi)容,如圖7所示。圖7服務(wù)器端顯示聊天內(nèi)容(7) 退出服務(wù)器和多人聊天室。五、程序清單/多人聊天室服務(wù)器端package ChatFrame_

4、01;import .DatagramPacket;import .DatagramSocket;import .InetAddress;import .Socket;import java.util.*;public class Server List ips = new ArrayList();DatagramSocket socket;DatagramPacket packet;DatagramSocket ssocket;DatagramPacket spacket;public Server() throws Excep

5、tion socket = new DatagramSocket(6666);ssocket=new DatagramSocket(8888);public void listen() throws Exception byte array = new byte100;packet = new DatagramPacket(array, array.length);socket.receive(packet);byte data=packet.getData();String received = new String(data,0,data.length,UTF-8);System.out.

6、println(received);String ss = received.split(|);String ip = ss0;byte dt=ss1.getBytes(UTF-8);spacket=new DatagramPacket(dt,dt.length,InetAddress.getByName(ip),3333);ssocket.send(spacket);public static void main(String args) throws Exception Server s = new Server();while (true) s.listen();/多人聊天室客戶端pac

7、kage ChatFrame_01;import java.io.*;import javax.swing.UIManager;import java.awt.*;public class ChatApp boolean packFrame = false;ChatApp() ChatFrame frame = new ChatFrame();if (packFrame) frame.pack(); else frame.validate();/ 放置窗體在屏幕中央Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(

8、);Dimension frameSize = frame.getSize();if (frameSize.height screenSize.height) frameSize.height = screenSize.height;if (frameSize.width screenSize.width) frameSize.width = screenSize.width;frame.setLocation(screenSize.width - frameSize.width) / 2,(screenSize.height - frameSize.height) / 2);frame.se

9、tVisible(true);frame.waitforpackets();public static void main(String args) new ChatApp();/登錄窗口package ChatFrame_01;import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.lang.*;import java.awt.color.*;import javax.swing.JOptionPane;public class

10、ChatFrame extends JFrame JPanel contentPane;JLabel label1 = new JLabel();/ 發(fā)送消息JLabel label2 = new JLabel();/ 輸入ipLabel label3 = new Label();/ 輸入端口標(biāo)簽Label label4 = new Label();/ 輸出端口標(biāo)簽JTextField textField1 = new JTextField();/ 發(fā)送消息JTextField textField2 = new JTextField();/ 輸入ipJTextField textField3

11、= new JTextField();/ 獲得輸入端口JTextField textField4 = new JTextField();/ 獲得輸出端口JButton button1 = new JButton(發(fā)送);/ 發(fā)送消息TextArea textArea1 = new TextArea();JOptionPane jopane = new JOptionPane();DatagramPacket sendpacket, receivepacket;/ 聲明發(fā)送和接收數(shù)據(jù)包DatagramSocket sendsocket, receivesocket;/ 聲明發(fā)送和接收Datagr

12、amSocketpublic ChatFrame() enableEvents(AWTEvent.WINDOW_EVENT_MASK);try toInit(); catch (Exception e) e.printStackTrace();private void toInit() throws Exception contentPane = (JPanel) this.getContentPane();label1.setText(發(fā)送信息:);label1.setBounds(new Rectangle(13, 100, 60, 21);contentPane.setLayout(nu

13、ll);contentPane.setBackground(Color.pink);this.setSize(new Dimension(363, 502);this.setTitle(多人聊天室);label2.setText(輸入對方IP地址:);label2.setBounds(new Rectangle(12, 19, 109, 23);label3.setText(輸入端口:);label3.setBounds(new Rectangle(12, 58, 55, 22);label4.setText(輸出端口:);label4.setBounds(new Rectangle(180,

14、 58, 55, 22);textField3.setText(3000);textField4.setText(3001);button1.setBounds(new Rectangle(280, 100, 59, 21);button1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) button1_actionPerformed(e););textField1.addKeyListener(new KeyAdapter() public voi

15、d keyPressed(KeyEvent e) if (e.getKeyCode() = KeyEvent.VK_ENTER) String str = textField2.getText();String str1=textField1.getText();if (pareTo() != 0&!.equals(str1) try textArea1.append(nto + textField2.getText()+ : + 3000 + say: + textField1.getText();String s = textField1.getText();byte dat

16、a = s.getBytes(UTF-8);sendpacket = new DatagramPacket(data,data.length,InetAddress.getByName(9),6666);sendsocket.send(sendpacket); catch (IOException exc) exc.printStackTrace();textField1.setText(););textField4.setBounds(new Rectangle(240, 58, 90, 22);textField3.setBounds(new Rectangle(70

17、, 58, 90, 22);textField2.setBounds(new Rectangle(123, 20, 120, 19);textField1.setBounds(new Rectangle(76, 100, 190, 19);textArea1.setBounds(new Rectangle(11, 140, 333, 315);textArea1.setEditable(false);textArea1.setBackground(Color.white);contentPane.add(label4, null);contentPane.add(label3, null);c

18、ontentPane.add(label2, null);contentPane.add(label1, null);contentPane.add(textField1, null);contentPane.add(textField2, null);contentPane.add(textField3, null);contentPane.add(textField4, null);contentPane.add(textArea1, null);contentPane.add(button1, null);this.setVisible(true);bind();protected vo

19、id processWindowEvent(WindowEvent e) cessWindowEvent(e);if (e.getID() = WindowEvent.WINDOW_CLOSING) System.exit(0);public void waitforpackets() / 檢測并接受對方發(fā)來的消息while (true) try byte array = new byte100;receivepacket = new DatagramPacket(array, array.length);receivesocket.receive(receivepacket

20、);/ 接收textArea1.append(nfrom + receivepacket.getAddress() + :+ receivepacket.getPort() + get:);String received = new String(receivepacket.getData(), 0,receivepacket.getLength(), UTF-8);textArea1.append(received); catch (IOException se) se.printStackTrace();void bind() / 和對方建立連try sendsocket = new DatagramSocket(3000);receivesocket = new DatagramSocket(3333); catch (Exception e) void button1_actionPerformed(ActionEvent e) / 發(fā)送消息到對方String str = textField2.getText();String str1=textField1.getText();if (pareTo() != 0&!.equals(str1) try textArea1.appen

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論