试验四 基于 UDP Sockets 编程 一、试验目标 1. 熟悉 UDP 编程基本过程 2. 了解 UDP 协议相关基本概念 3. 掌握 UDP 协议与线程结合方式二、试验内容 1. 利用 UDP 协议实现一个简单白板程序,要求以下:用户在客户端界面上单击鼠标左键后程序在鼠标单击位置画 20*20 圆形,单击右键后程序在鼠标单击位置画20*20 圆。服务器界面上将同时显示与客户端一致画面。 2. 实行 UDP 编写一个网络程序,该程序客户端每隔 1 秒向服务端发送一个温度值,服务端能够接收该温度值并显示一条动态温度曲线。其界面以下: 3. 假如要求每增加一个客户端则增加一条动态曲线,而且显示一条全部客户端平均温度曲线,该程序应该怎样改变? 三、试验步骤 1. 针对第 1 题,定义数据传递格式为:对象类型(圆、正方形等等) X 坐标 2. 实现客户端绘制程序,其代码以下: package lab.lab5; import java.applet.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; public class BoardClient extends Applet implements MouseListener{ private Graphics gBuf; private Image imgBuf; private ArrayList shapeList=new ArrayList(); public static void main(String[] args) { Frame app = new Frame("白板客户端"); app.setSize(400, 400); app.setLocationByPlatform(true); BoardClient applet = Y 坐标 1 字节 2 字节 2 字节 new BoardClient(); applet.addMouseListener(applet); app.add(applet); app.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event) { event.getWindow().dispose(); System.exit(0); } }); app.show(); applet.start(); } public void init() { } public void paint(Graphics g) { int graphWidth = bounds().width; int graphHeight = bounds().height; imgBuf = createImage(graphWidth, graphHeight); gBuf = imgBuf.getGraphics(); gBuf.clearRect(0, 0, graphWidth, graphHeight); Iterator it=shapeList.iterator(); Shape shape; while (it.hasNext()) { shape=(Shape)it.next(); if (shape.type==Shape.CIRCLE) gBuf.drawOval(shape.x-10,shape.y-10,20,20); else i...