编写一个客户/服务器程序,服务器的功能是计算圆的面积。客户端将圆的半径发送给服务器端,服务器端计算得出的圆面积发送给客户端,并在客户端显示。 1、 多线程 2、 字节流—不同的流。Buffered----Data 3、 Send(),Receive()
时间: 2024-11-05 07:33:05 浏览: 3
基于Python开发的五子棋客户端与服务器端配套设计源码
编写一个简单的客户/服务器程序,首先需要理解其基本架构。在这种模式下,服务器端接收来自客户端的数据(例如圆的半径),处理请求,然后返回结果。我们可以利用多线程来实现并发处理,提高效率;同时,使用字节流(如`BufferedReader`读取输入,`PrintWriter`写入输出)进行数据交换,其中`DataOutputStream`可以用于将计算结果发送回客户端。
以下是使用Java的一个简要步骤:
1. **创建服务器端**:
- 创建一个ServerSocket,监听特定端口。
- 使用while循环接受新的连接(通过`accept()`方法)。
- 对每个新连接,创建一个新的线程(Thread或`ExecutorService`)来处理请求。
- 在线程内部,使用`BufferedReader`从客户端读取半径值,然后计算圆面积。
- 将计算结果转换成字符串,通过`PrintStream`或`DataOutputStream`发送回客户端。
- 当完成处理后关闭连接。
2. **创建客户端**:
- 创建一个Socket实例,连接到服务器的指定地址和端口。
- 使用`BufferedInputStream`从服务器读取响应,获取圆面积信息。
- 接收数据后,在客户端使用`println()`或类似方法显示面积值。
```java
// Server-side (simplified)
import java.io.*;
import java.net.*;
public class CircleAreaServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
Socket clientSocket = serverSocket.accept();
new Thread(() -> handleClient(clientSocket)).start();
}
}
private static void handleClient(Socket socket) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String radiusStr = in.readLine();
double radius = Double.parseDouble(radiusStr);
// Calculate area and send back to client
double area = Math.PI * radius * radius;
try (PrintStream out = new PrintStream(socket.getOutputStream())) {
out.println("Area: " + area);
}
}
}
// Client-side (simplified)
import java.io.*;
import java.net.*;
public class CircleAreaClient {
public static void main(String[] args) throws IOException {
String host = "localhost";
int port = 8080;
Socket socket = new Socket(host, port);
try (BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true)) {
// Send the radius
out.println("5"); // Replace with actual input
// Read the response and display it
String response = in.readLine();
System.out.println("Received from server: " + response);
} finally {
socket.close();
}
}
}
```
阅读全文