您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 43电子白板《Java网络编程技术》
广州大学华软软件学院课程设计指导书广州大学华软软件学院软件工程系《JAVA网络编程技术(SS0013)》课程设计JavaSocket网络编程-------电子白板即时通信程序设计课程设计指导书2011-2012学年第一学期课程名称:JAVA网络编程技术课程代码:SS0013计划学时:68学分:4课程性质:必修、考试面向专业:软件工程课程负责人:邹立杰授课老师:邹立杰班级(小班代码):姓名:陈甜甜学号:1040112179广州大学华软软件学院SouthChinaInstituteofSoftwareEngineering,GuangZhouUniversity课程设计指导书Java网络编程技术课程代码SS0013第2页1、课程设计题目:JavaSocket网络编程-------电子白板即时通信程序设计2、课程设计要求:通过本课程设计深刻理解Java网络编程的基本方法和技巧本课程设计所要实现的电子白板程序主要应用的编程技术:(1)JavaSWingGUI界面设计技术(2)JavaSocket网络编程技术(3)JavaObjectInputStream和ObjectOutputStream类的实例发送和接收对象的功能(4)实现Serializable接口编写功能类,实现该类对象的网络发送和接收。3、程序基本功能:(1)服务器端:提供提供白板图形和文字消息的转发转发功能,把当前的登录到服务器上的所有客户端的电子白板内容群发转发给在线的每个客户,以及群发转发即时文字消息。(2)服务器端保存自第一个用户登录后的所有白板内容。(3)程序的客户端通过JavaSocket网络协议和服务器实现网络通信,接收服务器端发送过来的白板内容消息并且绘制在该客户端的白板客户区内,接收显示文本消息;绘制白板并发送到服务器端,为所有客户端共享。(4)客户端登录时,发送登录消息,服务器端把当前保存的白板内容发送到该客户端,该客户端收到由服务器发送来的白板内容绘制到客户区。(5)电子白板图形有圆形、填充圆形、矩形、填充矩形、圆角矩形、填充圆角矩形、直线和随机曲线等。4、GUI设计GUI设计使用SUN公司SWing可视JavaBean组件技术或IBM公司的SWT可视JavaBean组件技术。课程设计指导书Java网络编程技术课程代码SS0013第3页GUI设计界面客户端:客户端使用SWing组件技术进行GUI界面设计1)参考界面客户端登陆:客户端主程序界面:课程设计指导书Java网络编程技术课程代码SS0013第4页服务器端:服务器端为一个控制台应用程序,主要功能是传递客户端消息。5、主要代码:(1)Serializable接口应用:在服务器端通过ObjectInputSream和ObjectOutputStream以及Socket类传送dog类的对象到客户端,在客户端接收由服务器端传送过来的dog对象,并输出器属性。时序图:类图:课程设计指导书Java网络编程技术课程代码SS0013第5页1)服务器端代码importjava.io.*;importjava.net.*;interfacemyDogextendsjava.io.Serializable{voidsetAge(inta);intgetAge();voidsetName(Stringn);StringgetName();voidrun();}classdogimplementsmyDog{privateintage;privateStringname;publicvoidsetAge(inta){age=a;}publicintgetAge(){returnage;}publicvoidsetName(Stringn){name=n;}publicStringgetName(){returnname;}publicvoidrun(){System.out.println(Icanrunfast!);}}publicclassOServer{publicstaticvoidmain(String[]args)throwsIOException{dogd=newdog();d.setAge(10);d.setName(Tom);System.out.println(d.getAge());System.out.println(d.getName());d.run();ServerSockets=newServerSocket(8888);Socketss=s.accept();OutputStreamout=ss.getOutputStream();课程设计指导书Java网络编程技术课程代码SS0013第6页BufferedOutputStreamb=newBufferedOutputStream(out);ObjectOutputStreamoo=newObjectOutputStream(b);oo.writeObject(d);oo.flush();}}2)客户端代码importjava.io.*;importjava.net.*;publicclassOClient{publicstaticvoidmain(String[]args)throwsIOException,ClassNotFoundException{Sockets=newSocket(127.0.0.1,8888);InputStreamin=s.getInputStream();BufferedInputStreaminput=newBufferedInputStream(in);ObjectInputStreaminn=newObjectInputStream(input);dogd=(dog)inn.readObject();System.out.println(client:+d.getAge());System.out.println(client:+d.getName());d.run();}}编译运行:服务器端:客户端:运行结果可以看出,从服务器发送的客户端的dog对象,属性被取出、输出。结果正确。(2)简易网络画板电子白板程序课程设计指导书Java网络编程技术课程代码SS0013第7页1)功能:在服务器端实现简易画板,在客户端同步服务器端的画板2)运行截图:服务器户、客户端界面:3)系统类图:课程设计指导书Java网络编程技术课程代码SS0013第8页4)实现:a.首先封装一个ranomLine类,作为用鼠标划线的轨迹的记录器,并封装实现自动划线的方法:其中有一个向量Vector域,用来记录鼠标划线所包含的点的对象,paint(Graphicsg)方法是实现遍历Vector中的点,并将这些点画出。importjava.io.*;importjava.util.*;importjava.awt.*;publicclassrandomLineimplementsSerializable{Vectorpoints=newVector();Colorcolor=null;intx0,y0,x1,y1;Pointpoint,start,end;publicrandomLine(Colorc){this.color=c;}publicvoidsetPoints(intx,inty)课程设计指导书Java网络编程技术课程代码SS0013第9页{point=newPoint(x,y);this.points.add(point);}publicvoidpaint(Graphicsg){g.setColor(color);EnumerationallPoints=points.elements();start=(Point)allPoints.nextElement();x0=(int)start.getX();y0=(int)start.getY();while(allPoints.hasMoreElements()){end=(Point)allPoints.nextElement();x1=(int)end.getX();y1=(int)end.getY();g.drawLine(x0,y0,x1,y1);x0=x1;y0=y1;}}}randomLine类时序图:b.服务器端:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;importjava.net.*;publicclassmyPanelextendsJPanel{privaterandomLineranLine=newrandomLine(Color.red);privateServerSockets;privateSocketss;privateObjectOutputStreamoutput;privateOutputStreamos;课程设计指导书Java网络编程技术课程代码SS0013第10页privateBufferedOutputStreamb;privateGraphicsg;publicintx0,y0,x1,y1;publicmyPanel(){setBounds(0,0,400,300);setBackground(Color.white);addMouseMotionListener(newmouseAction());addMouseListener(newmousemovpress());this.validate();newmyThread().start();}publicvoidpaint(Graphicsg){}classmouseActionextendsMouseMotionAdapter{publicvoidmouseDragged(MouseEvente){g=getGraphics();g.setColor(Color.red);x1=e.getX();y1=e.getY();g.drawLine(x0,y0,x1,y1);x0=x1;y0=y1;ranLine.setPoints(x1,y1);}}classmousemovpressextendsMouseAdapter{publicvoidmousePressed(MouseEvente){x0=e.getX();y0=e.getY();}publicvoidmouseReleased(MouseEvente){try{os=ss.getOutputStream();b=newBufferedOutputStream(os);output=newObjectOutputStream(b);output.writeObject(ranLine);output.flush();}catch(IOExceptionex){}}}classmyThreadextendsThread{publicvoidrun()课程设计指导书Java网络编程技术课程代码SS0013第11页{try{s=newServerSocket(1234);ss=s.accept();}catch(IOExceptionex){}}}}classmyFrameextendsJFrame{myPanelp=newmyPanel();publicmyFrame(){super(白板服务器);setLayout(null);setBounds(100,100,400,300);add(p);setVisible(true);this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}publicstaticvoidmain(String[]ss){newmyFrame();}}c.客户端importjava.awt.*;importjava.io.*;imp
本文标题:43电子白板《Java网络编程技术》
链接地址:https://www.777doc.com/doc-4424228 .html