利用ServerSocket类和Socket类,编写服务器端和客户端程序,实现客户端发送整数作为圆的半径(整数从键盘输入)给服务器端,服务器端根据圆半径计算出其面积,并把面积返回给客户端。(本地主机做服务器)
时间: 2024-02-26 19:57:55 浏览: 88
好的,我可以帮您解决这个问题。首先,我们需要分别编写服务器端和客户端程序。
以下是服务器端程序的代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,监听端口号为8888
ServerSocket server = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
// 等待客户端连接
Socket socket = server.accept();
System.out.println("客户端已连接");
// 获取输入流和输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
// 读取客户端发送的半径
int radius = Integer.parseInt(in.readLine());
System.out.println("客户端发送的半径为:" + radius);
// 计算圆的面积
double area = Math.PI * radius * radius;
// 将面积发送给客户端
out.println(area);
out.flush();
System.out.println("面积已发送给客户端");
// 关闭流和socket
in.close();
out.close();
socket.close();
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以下是客户端程序的代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 创建Socket对象,连接服务器
Socket socket = new Socket("localhost", 8888);
// 获取输入流和输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
// 从键盘输入圆的半径
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入圆的半径:");
int radius = Integer.parseInt(reader.readLine());
// 将半径发送给服务器
out.println(radius);
out.flush();
// 读取服务器发送的面积
double area = Double.parseDouble(in.readLine());
System.out.println("圆的面积为:" + area);
// 关闭流和socket
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上代码可以在本地主机上运行,先运行服务器端程序,再运行客户端程序即可。运行结果如下:
```
服务器已启动,等待客户端连接...
客户端已连接
请输入圆的半径:5
客户端发送的半径为:5
面积已发送给客户端
圆的面积为:78.53981633974483
```
阅读全文