java编写一个多线程服务端程序用来计算球体体积,从客户端接收半径输入,然后计算结果返回给客户端
时间: 2024-03-23 16:37:35 浏览: 67
好的,以下是一个简单的Java多线程服务器程序,用于计算球体体积,从客户端接收半径输入,然后计算结果返回给客户端。请注意,此程序仅供参考,您可以根据需要进行修改。
```java
import java.io.*;
import java.net.*;
public class VolumeServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888); // 创建服务器Socket,监听端口8888
System.out.println("服务器已启动,等待客户端连接...");
while (true) {
Socket socket = serverSocket.accept(); // 等待客户端连接
System.out.println("客户端已连接:" + socket.getInetAddress().getHostAddress());
// 创建一个新线程处理该客户端请求
Thread thread = new Thread(new VolumeHandler(socket));
thread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class VolumeHandler implements Runnable {
private Socket socket;
public VolumeHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
String inputLine = in.readLine(); // 从客户端读取半径
if (inputLine == null) {
break;
}
double radius = Double.parseDouble(inputLine);
double volume = 4.0 / 3.0 * Math.PI * Math.pow(radius, 3); // 计算球体体积
out.println(volume); // 将结果发送给客户端
}
socket.close(); // 关闭连接
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
客户端可以使用以下代码与服务器进行通信:
```java
import java.io.*;
import java.net.*;
public class VolumeClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888); // 连接服务器,端口号为8888
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.print("请输入半径:");
String inputLine = stdIn.readLine();
if (inputLine == null || inputLine.equals("")) {
break;
}
out.println(inputLine); // 将半径发送给服务器
String response = in.readLine(); // 接收服务器返回的结果
System.out.println("球体体积为:" + response);
}
socket.close(); // 关闭连接
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上是一个简单的Java多线程服务器程序,用于计算球体体积,从客户端接收半径输入,然后计算结果返回给客户端。
阅读全文