ubuntu使用共享存储区来实现 client 进程和 server 进程之间的通信,写出代码
时间: 2024-12-16 17:26:18 浏览: 13
在Ubuntu或其他Linux系统中,可以使用socket编程来实现客户端和服务器进程间的通信,而不是直接共享存储区。因为直接共享内存通常是用于性能优化的本地通信场景,而在网络环境中,socket更为常见。下面是一个简单的Python示例,展示如何使用套接字(socket)进行TCP通信:
```python
# 服务器端 (server.py)
import socket
def start_server():
host = 'localhost' # 可以换成IP地址
port = 9000
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen(1) # 等待连接
print(f"Server is listening on {host}:{port}")
conn, addr = server_socket.accept() # 接受连接
print(f"Connected by: {addr}")
while True:
data = conn.recv(1024) # 接收数据
if not data: break
print("Received:", data.decode())
response = "You said: " + data.decode()
conn.sendall(response.encode()) # 发送响应
if __name__ == "__main__":
start_server()
# 客户端 (client.py)
import socket
def start_client(server_host, server_port):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((server_host, server_port))
message = input("Enter your message: ")
client_socket.send(message.encode()) # 发送消息
received_data = client_socket.recv(1024)
print("Received from server:", received_data.decode())
if __name__ == "__main__":
start_client('localhost', 9000)
```
在这个例子中,服务器启动监听,当客户端连接并发送数据时,服务器接收、处理并回复。客户端则作为发起连接的一方,发送信息并接收服务器的回应。
阅读全文