版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同范本之別墅土建施工合同
- SDK集成與跨平臺兼容性研究
- 建筑工程機(jī)械智能化技術(shù)創(chuàng)新應(yīng)用
- 存儲數(shù)據(jù)歸檔
- 2024版衛(wèi)生間裝修的合同范本
- 2024版展覽場地租賃合同范本
- 2025屆安徽省淮北市英語高三第一學(xué)期期末學(xué)業(yè)水平測試模擬試題含解析
- 云南省大理州賓川縣第四高級中學(xué)2025屆高一數(shù)學(xué)第一學(xué)期期末復(fù)習(xí)檢測模擬試題含解析
- 廣東省東莞市北京師范大學(xué)石竹附屬學(xué)校2025屆高二上數(shù)學(xué)期末質(zhì)量跟蹤監(jiān)視試題含解析
- 北師大第二附屬中學(xué)2025屆數(shù)學(xué)高二上期末學(xué)業(yè)水平測試模擬試題含解析
- 2024年成考高起點(diǎn)英語真題及答案
- 社交禮儀-儀態(tài)禮儀
- 北師大版小學(xué)數(shù)學(xué)三年級上冊第二單元《觀察物體》大單元教學(xué)設(shè)計(jì)
- 2024入團(tuán)知識題庫(含答案)
- 25題戰(zhàn)略規(guī)劃崗位常見面試問題含HR問題考察點(diǎn)及參考回答
- 中外政治思想史-形成性測試三-國開(HB)-參考資料
- 中華民族共同體概論課件專家版9第九講 混一南北和中華民族大統(tǒng)合(元朝時(shí)期)
- 電梯日管控、周排查、月調(diào)度內(nèi)容表格
- 個(gè)人理財(cái)理論與實(shí)務(wù)李杰輝課后參考答案
- HCCDP 云遷移認(rèn)證理論題庫
- 《戰(zhàn)爭與和平法》讀書筆記思維導(dǎo)圖
評論
0/150
提交評論