请举例说明一个C/S结构的具体应用,并给出相应的实现代码
时间: 2024-10-17 07:12:29 浏览: 110
socket实现c/s结构示例代码
客户端/服务器(Client-Server,简称C/S)架构是一种常见的软件设计模式,常用于分布式系统中。例如,在在线游戏、电子邮件服务和网上银行等场景中,用户作为客户端通过网络连接到服务器端,进行数据交互和操作。
举个简单的例子,我们可以考虑一个文本编辑器,其中客户端负责显示界面、接收用户的输入并将其发送给服务器,而服务器则处理所有用户的请求,如保存文件、查找历史记录等。
服务器端(Java)实现:
```java
import java.io.*;
import java.net.*;
public class TextEditorServer {
private ServerSocket serverSocket;
public void start() throws IOException {
serverSocket = new ServerSocket(8000); // 设置监听端口
while (true) {
Socket clientSocket = serverSocket.accept();
Thread clientThread = new ClientHandler(clientSocket);
clientThread.start(); // 新建线程处理每个客户端请求
}
}
private class ClientHandler extends Thread {
private Socket socket;
public ClientHandler(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);
String request = in.readLine();
if (request.equals("save")) {
saveFile(in, out);
} else if (request.equals("search")) {
searchHistory(in, out);
} // 处理更多命令...
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {}
}
}
// 实现具体的业务逻辑,如保存文件和搜索历史的方法
}
}
```
客户端(Python)实现:
```python
import socket
def connect_to_server(server_address):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(server_address)
# 发送请求
client_socket.sendall(b'save\n') # 示例:保存文件
# ... 更多请求 ...
data = client_socket.recv(1024).decode()
print(data)
# 调用函数连接到服务器
connect_to_server(('localhost', 8000))
```
阅读全文