实验1 会结账的服务器。 客户端和服务器建立套接字连接后,客户将如下格式的账单发送给服务器。 房租:2189元 水费:112.9元 电费:569元 物业费:832元 服务器返回给客户的信息是: 您的账单: 房租:2189元 水费:112.9元 电费:569元 物业费:832元 总计:3699元 程序运行效果如图:java
时间: 2023-06-14 10:07:26 浏览: 238
很好,让我们开始实现这个会结账的服务器。
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建服务器套接字
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动...");
// 等待客户端连接
Socket socket = serverSocket.accept();
System.out.println("客户端已连接...");
// 获取输入流,读取客户端发送的账单
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String bill = in.readLine();
System.out.println("客户端发送的账单是:" + bill);
// 计算总费用
double total = 0.0;
String[] items = bill.split(" ");
for (String item : items) {
String[] parts = item.split(":");
double cost = Double.parseDouble(parts[1]);
total += cost;
}
// 发送账单信息给客户端
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("您的账单:\n" + bill + "\n总计:" + total + "元");
// 关闭套接字和流
out.close();
in.close();
socket.close();
serverSocket.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 = new Socket("localhost", 8888);
// 发送账单信息给服务器
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
String bill = "房租:2189元 水费:112.9元 电费:569元 物业费:832元";
out.println(bill);
// 获取服务器返回的账单信息
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String response = in.readLine();
System.out.println(response);
// 关闭套接字和流
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
运行客户端和服务器程序后,可以看到以下输出:
```
服务器已启动...
客户端已连接...
客户端发送的账单是:房租:2189元 水费:112.9元 电费:569元 物业费:832元
```
客户端程序会在控制台上输出以下内容:
```
您的账单:
房租:2189元 水费:112.9元 电费:569元 物业费:832元
总计:3699.9元
```
可以看到,服务器成功地计算了账单的总费用,并将结果发送给了客户端。
阅读全文