用JavaSocket编程实现白板程序
时间: 2024-03-25 18:37:05 浏览: 9
好的,以下是用Java Socket编程实现简单白板程序的示例代码:
服务器端代码:
```
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started.");
while(true) {
Socket socket = serverSocket.accept();
System.out.println("Client connected.");
// 创建一个新线程处理客户端请求
Thread thread = new Thread(new ServerThread(socket));
thread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerThread implements Runnable {
private Socket socket;
public ServerThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
// 获取输入流和输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 读取客户端发送的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println("Received: " + line);
// 转发消息给其他客户端
for (Socket s : ServerSocketThread.socketList) {
if (s != socket) {
OutputStream os = s.getOutputStream();
os.write((line + "\n").getBytes());
os.flush();
}
}
}
// 关闭连接
reader.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerSocketThread {
public static java.util.List<Socket> socketList = new java.util.ArrayList<Socket>();
}
```
客户端代码:
```
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("Connected to server.");
// 将新连接的socket加入socketList中
ServerSocketThread.socketList.add(socket);
// 获取输入流和输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 读取用户输入并发送给服务器
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
String line = null;
while ((line = reader.readLine()) != null) {
writer.write(line + "\n");
writer.flush();
}
// 关闭连接
reader.close();
writer.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerSocketThread {
public static java.util.List<Socket> socketList = new java.util.ArrayList<Socket>();
}
```
这段代码实现了一个简单的白板程序,可以通过多个客户端同时连接到服务器,实现实时消息的转发。当一个客户端发送消息时,服务器会将消息转发给所有其他客户端。