您好,欢迎访问三七文档
从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法《计算机网络编程技术》实训报告基于UDP协议多客户有图形用户界面的网上聊天程序UDP-basedprotocolmulti-clientwithagraphicaluserinterface,onlinechatprogram班级:姓名:学号:伊犁师范学院电子与信息工程学院从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法一.实验目的巩固所学的Java语言基础知识,增进Java语言的编辑基本功,拓展常用类库的应用,了解Java网络程序设计的思路和方法,熟练掌握UDP协议编写程序的设计方法,掌握java.net基本网络包的使用方法,熟练使用Socket以及多线程。二.实验内容运用Java程序编写聊天室,实现一个基于UDP协议的简单的聊天程序,支持多人聊天并且客户端具有图形化用户界面。程序实现了聊天室的基本功能,其中有:1.启动服务器。2.启动登录界面。3.进入客户端界面。4.发送信息。5.离开客户端界面。6.关闭服务器。三、实验环境操作系统:Windows平台。测试环境:Eclipse。四、实验步骤1.创建项目,组织文件启动Eclipse,建立项目、包及各类,键入代码,操作结果如图1所示。图1项目和文件从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法2.运行程序进行测试(1)首先运行Server.java,打开“聊天室服务器”。服务器IP地址为192.168.0.2如图2所示。图2服务器控制台(2)服务器监听是否有新聊天者连接,如果没有,一直等待。如图3所示。图3服务器等待(3)运行客户端程序client.java,打开“多人聊天室“界面,客户端1的IP地址为192.168.0.3客户端2的IP地址为192.168.0.49,如图4所示。图4聊天室客户端界面从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法(4)在“多人聊天室”界面输入框输入聊天信息。如图5所示。图5在输入框输入聊天信息(5)在“多人聊天室”界面发送信息。如图6所示。从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法图6发送聊天信息(6)服务器端显示两个客户端聊天内容,如图7所示。图7服务器端显示聊天内容(7)退出服务器和多人聊天室。五、程序清单//多人聊天室服务器端从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法packageChatFrame_01;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;importjava.net.Socket;importjava.util.*;publicclassServer{Listips=newArrayList();DatagramSocketsocket;DatagramPacketpacket;DatagramSocketssocket;DatagramPacketspacket;publicServer()throwsException{socket=newDatagramSocket(6666);ssocket=newDatagramSocket(8888);}publicvoidlisten()throwsException{byte[]array=newbyte[100];packet=newDatagramPacket(array,array.length);socket.receive(packet);byte[]data=packet.getData();Stringreceived=newString(data,0,data.length,UTF-8);System.out.println(received);String[]ss=received.split(\\|);Stringip=ss[0];byte[]dt=ss[1].getBytes(UTF-8);spacket=newDatagramPacket(dt,dt.length,InetAddress.getByName(ip),3333);ssocket.send(spacket);}publicstaticvoidmain(String[]args)throwsException{Servers=newServer();while(true){s.listen();}}}//多人聊天室客户端packageChatFrame_01;importjava.io.*;importjavax.swing.UIManager;importjava.awt.*;从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法publicclassChatApp{booleanpackFrame=false;ChatApp(){ChatFrameframe=newChatFrame();if(packFrame){frame.pack();}else{frame.validate();}//放置窗体在屏幕中央DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();DimensionframeSize=frame.getSize();if(frameSize.heightscreenSize.height){frameSize.height=screenSize.height;}if(frameSize.widthscreenSize.width){frameSize.width=screenSize.width;}frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);frame.setVisible(true);frame.waitforpackets();}publicstaticvoidmain(String[]args){newChatApp();}}//登录窗口packageChatFrame_01;importjava.net.*;importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.lang.*;importjava.awt.color.*;importjavax.swing.JOptionPane;publicclassChatFrameextendsJFrame{JPanelcontentPane;JLabellabel1=newJLabel();//发送消息JLabellabel2=newJLabel();//输入ipLabellabel3=newLabel();//输入端口标签Labellabel4=newLabel();//输出端口标签从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法JTextFieldtextField1=newJTextField();//发送消息JTextFieldtextField2=newJTextField();//输入ipJTextFieldtextField3=newJTextField();//获得输入端口JTextFieldtextField4=newJTextField();//获得输出端口JButtonbutton1=newJButton(发送);//发送消息TextAreatextArea1=newTextArea();JOptionPanejopane=newJOptionPane();DatagramPacketsendpacket,receivepacket;//声明发送和接收数据包DatagramSocketsendsocket,receivesocket;//声明发送和接收DatagramSocketpublicChatFrame(){enableEvents(AWTEvent.WINDOW_EVENT_MASK);try{toInit();}catch(Exceptione){e.printStackTrace();}}privatevoidtoInit()throwsException{contentPane=(JPanel)this.getContentPane();label1.setText(发送信息:);label1.setBounds(newRectangle(13,100,60,21));contentPane.setLayout(null);contentPane.setBackground(Color.pink);this.setSize(newDimension(363,502));this.setTitle(多人聊天室);label2.setText(输入对方IP地址:);label2.setBounds(newRectangle(12,19,109,23));label3.setText(输入端口:);label3.setBounds(newRectangle(12,58,55,22));label4.setText(输出端口:);label4.setBounds(newRectangle(180,58,55,22));textField3.setText(3000);textField4.setText(3001);button1.setBounds(newRectangle(280,100,59,21));button1.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(ActionEvente){button1_actionPerformed(e);}});textField1.addKeyListener(newKeyAdapter(){publicvoidkeyPressed(KeyEvente){if(e.getKeyCode()==KeyEvent.VK_ENTER){Stringstr=textField2.getText();Stringstr1=textField1.getText();从实施课程改革以来,我反复学习有关的教育教学理论,深刻领会新课标精神,认真反思自身教学实际,研究学生,探究教法if(str.compareTo()!=0&&!.equals(str1)){try{textArea1.append(\nto+textField2.getText()+:+3000+say:+textField1.getText());Strings=textField1.getText();bytedata[]=s.getBytes(UTF-8);sendpacket=newDatagramPacket(data,data.length,InetAddress.getByName(192.168.0.19),6666);sendsocket.send(sendpacket);}catch(IOExceptionexc){exc.printStackTrace();}textField1.setText();}}}});textField4.setBou
本文标题:计算机网络编程实验
链接地址:https://www.777doc.com/doc-5682953 .html