使用 ServerSocket 类和Socket 类编写一个分布式的字符界面的程序,客户端输入一个图形的特征,比如 圆 4 或 长方形 3 4 或三角形 5 7 8,由服务器计算该图形的面积,并将结果发回给客户端
时间: 2024-10-23 16:08:33 浏览: 42
我的socket通讯工具.rar_ServerSocket_c++ Socket服务类_clientsocket
在分布式环境中,使用ServerSocket和Socket可以创建一个简单的图形面积计算器的应用。首先,我们有两个主要组件:服务器端和客户端。
**服务器端 (Server.java)**:
```java
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private static final int PORT = 9000;
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(PORT);
System.out.println("Server started on port " + PORT);
while (true) {
Socket client = server.accept();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter writer = new PrintWriter(client.getOutputStream(), true)) {
String input = reader.readLine();
int shapeType = Integer.parseInt(input.split(" ")[0]);
double area = calculateArea(shapeType); // 假设这里有对应的面积计算函数
writer.println("The area of the shape is: " + area);
}
finally {
client.close();
}
}
}
private static double calculateArea(int type) {
// 这里根据形状类型计算面积,例如圆形、长方形和三角形的具体公式
switch (type) {
case 1:
return Math.PI * Math.pow(Double.parseDouble(input.split(" ")[1]), 2);
case 2:
double width = Double.parseDouble(input.split(" ")[1]);
double height = Double.parseDouble(input.split(" ")[2]);
return width * height;
case 3:
double base = Double.parseDouble(input.split(" ")[1]);
double height = Double.parseDouble(input.split(" ")[2]);
return 0.5 * base * height;
default:
throw new IllegalArgumentException("Invalid shape type");
}
}
}
```
**客户端 (Client.java)**:
```java
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 9000);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
// 客户端示例,输入圆的半径
String userInput = "1 4";
writer.println(userInput);
String result = reader.readLine();
System.out.println("Received from server: " + result);
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
**运行流程:**
1. 客户端向服务器发送图形类型和特征数据(如圆的半径、长方形的尺寸等)。
2. 服务器接收到请求,解析数据并调用相应的面积计算方法。
3. 计算出面积后,服务器将结果发送回客户端。
4. 客户端读取服务器的回复并显示结果。
阅读全文