1、广州大学华软软件学院 课程设计指导书广州大学华软软件学院 软件工程系JAVA 网络编程技术(SS0013) 课程设计Java Socket 网络编程-电子白板即时通信程序设计课程设计指导书2011 -2012 学年 第一学期课程名称: JAVA 网络编程技术 课程代码: SS0013计划学时: 68 学分: 4课程性质: 必修、考试 面向专业:软件工程课程负责人: 邹立杰授课老师: 邹立杰班级(小班代码): 姓名: 陈甜甜 学号: 1040112179 广 州 大 学 华 软 软 件 学 院South China Institute of Software Engineering, Guang
2、Zhou University课程设计指导书 Java 网络编程技术 课程代码 SS0013第 2 页1、 课程设计题目:Java Socket 网络编程-电子白板即时通信程序设计2、 课程设计要求:通过本课程设计深刻理解 Java 网络编程的基本方法和技巧本课程设计所要实现的电子白板程序主要应用的编程技术:(1) Java SWing GUI 界面设计技术(2) Java Socket 网络编程技术(3) Java ObjectInputStream 和 ObjectOutputStream 类的实例发送和接收对象的功能(4) 实现 Serializable 接口编写功能类,实现该类对象的网
3、络发送和接收。3、 程序基本功能:(1)服务器端:提供提供白板图形和文字消息的转发转发功能,把当前的登录到服务器上的所有客户端的电子白板内容群发转发给在线的每个客户,以及群发转发即时文字消息。(2)服务器端保存自第一个用户登录后的所有白板内容。(3)程序的客户端通过 Java Socket 网络协议和服务器实现网络通信,接收服务器端发送过来的白板内容消息并且绘制在该客户端的白板客户区内,接收显示文本消息;绘制白板并发送到服务器端,为所有客户端共享。(4)客户端登录时,发送登录消息,服务器端把当前保存的白板内容发送到该客户端,该客户端收到由服务器发送来的白板内容绘制到客户区。(5)电子白板图形有
4、圆形、填充圆形、矩形、填充矩形、圆角矩形、填充圆角矩形、直线和随机曲线等。4、 GUI 设计GUI 设计使用 SUN 公司 SWing 可视 JavaBean 组件技术或 IBM 公司的 SWT 可视 JavaBean课程设计指导书 Java 网络编程技术 课程代码 SS0013第 3 页组件技术。GUI 设计界面客户端:客户端使用 SWing 组件技术进行 GUI 界面设计1)参考界面客户端登陆:客户端主程序界面:课程设计指导书 Java 网络编程技术 课程代码 SS0013第 4 页服务器端:服务器端为一个控制台应用程序,主要功能是传递客户端消息。5、主要代码:(1)Serializabl
5、e 接口应用:在服务器端通过 ObjectInputSream 和 ObjectOutputStream 以及 Socket类传送 dog 类的对象到客户端,在客户端接收由服务器端传送过来的 dog 对象,并输出器属性。时序图:课程设计指导书 Java 网络编程技术 课程代码 SS0013第 5 页类图:1)服务器端代码import java.io.*;import .*;interface myDog extends java.io.Serializable void setAge(int a);int getAge();void setName(String n);String getNa
6、me();void run();课程设计指导书 Java 网络编程技术 课程代码 SS0013第 6 页class dog implements myDog private int age;private String name;public void setAge(int a) age=a;public int getAge() return age;public void setName(String n) name = n;public String getName() return name;public void run() System.out.println(“I can run
7、 fast!“);public class OServer public static void main(String args) throws IOException dog d = new dog();d.setAge(10);d.setName(“Tom“);System.out.println(d.getAge();System.out.println(d.getName();d.run();ServerSocket s = new ServerSocket(8888);Socket ss = s.accept();OutputStream out = ss.getOutputStr
8、eam();BufferedOutputStream b = new BufferedOutputStream(out);ObjectOutputStream oo = new ObjectOutputStream(b);oo.writeObject(d);oo.flush();2)客户端代码import java.io.*;import .*;public class OClient public static void main(String args) throws IOException,ClassNotFoundException Socket s=new Socket(“127.0
9、.0.1“,8888);InputStream in=s.getInputStream();BufferedInputStream input=new BufferedInputStream(in);ObjectInputStream inn=new ObjectInputStream(input);dog d=(dog)inn.readObject();System.out.println(“client:“+d.getAge();课程设计指导书 Java 网络编程技术 课程代码 SS0013第 7 页System.out.println(“client:“+d.getName();d.ru
10、n();编译运行:服务器端:客户端:运行结果可以看出,从服务器发送的客户端的 dog 对象,属性被取出、输出。结果正确。(2)简易网络画板电子白板程序1) 功能:在服务器端实现简易画板,在客户端同步服务器端的画板2) 运行截图:服务器户、客户端界面:课程设计指导书 Java 网络编程技术 课程代码 SS0013第 8 页3)系统类图:课程设计指导书 Java 网络编程技术 课程代码 SS0013第 9 页4)实现:a. 首先封装一个 ranomLine 类,作为用鼠标划线的轨迹的记录器,并封装实现自动划线的方法:其中有一个向量 Vector 域,用来记录鼠标划线所包含的点的对象,paint(G
11、raphics g)方法是实现遍历 Vector 中的点,并将这些点画出。import java.io.*;import java.util.*;import java.awt.*;public class randomLine implements Serializable Vector points=new Vector();Color color=null;int x0,y0,x1,y1;Point point,start,end;public randomLine(Color c)this.color=c;public void setPoints(int x,int y)课程设计指导
12、书 Java 网络编程技术 课程代码 SS0013第 10 页point=new Point(x,y);this.points.add(point);public void paint(Graphics g)g.setColor(color);Enumeration allPoints=points.elements();start=(Point)allPoints.nextElement();x0=(int)start.getX();y0=(int)start.getY();while(allPoints.hasMoreElements()end=(Point)allPoints.nextE
13、lement();x1=(int)end.getX();y1=(int)end.getY();g.drawLine(x0, y0, x1, y1);x0=x1;y0=y1;randomLine 类时序图:b.服务器端:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import .*;public class myPanel extends JPanelprivate randomLine ranLine=new randomLine(Color.red);private ServerSocket s;private Socket ss;private ObjectOutputStream output;private OutputStream os ;