Java将服务器绘制的线条同步到客户端,客户端不需要有其他功能的代码
时间: 2024-03-24 09:38:01 浏览: 15
以下是一个简单的示例代码,演示如何在Java中将服务器绘制的线条同步到客户端,客户端不需要有其他功能:
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,监听客户端的连接
ServerSocket server = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
// 等待客户端连接
Socket socket = server.accept();
System.out.println("客户端已连接,IP地址为:" + socket.getInetAddress().getHostAddress());
// 创建线条对象,并绘制线条
Line line = new Line(10, 10, 100, 100, "red", 2);
line.draw();
// 将线条对象序列化为字节数组
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(line);
byte[] data = baos.toByteArray();
// 发送线条数据给客户端
OutputStream os = socket.getOutputStream();
os.write(data);
os.flush();
// 关闭流和Socket对象
oos.close();
baos.close();
os.close();
socket.close();
server.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 线条类
class Line implements Serializable {
private static final long serialVersionUID = 1L;
private int startX;
private int startY;
private int endX;
private int endY;
private String color;
private int thickness;
public Line(int startX, int startY, int endX, int endY, String color, int thickness) {
this.startX = startX;
this.startY = startY;
this.endX = endX;
this.endY = endY;
this.color = color;
this.thickness = thickness;
}
public void draw() {
System.out.println("绘制线条:起点(" + startX + "," + startY + "),终点(" + endX + "," + endY + "),颜色:" + color + ",粗细:" + thickness);
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 连接服务器
Socket socket = new Socket("localhost", 8888);
System.out.println("连接服务器成功...");
// 接收线条数据
InputStream is = socket.getInputStream();
byte[] data = new byte[1024];
int len = is.read(data);
ByteArrayInputStream bais = new ByteArrayInputStream(data, 0, len);
ObjectInputStream ois = new ObjectInputStream(bais);
Line line = (Line) ois.readObject();
// 绘制线条
line.draw();
// 关闭流和Socket对象
ois.close();
bais.close();
is.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在这个示例中,服务器端创建了一个Line对象,并绘制出一条线条。然后将线条对象序列化为字节数组,并通过Socket发送给客户端。客户端接收线条数据,将字节数组反序列化成Line对象,并绘制出一条线条。
需要注意的是,这个示例只演示了如何将线条数据从服务器端传输到客户端,并在客户端绘制出线条。实际应用中,可能需要考虑多个客户端同时连接的情况,以及如何实时同步线条数据等问题。