写一个socket服务端支持多个客户端接收和发送的消息队列
时间: 2024-11-15 12:30:39 浏览: 0
要创建一个Socket服务端,支持多个客户端同时接收和发送消息队列,你可以使用Python的`socketserver`模块结合`threading`库来实现异步处理。以下是一个基本的例子:
```python
import socketserver
import threading
class ThreadedTCPRequestHandler(socketserver.StreamRequestHandler):
def handle(self):
# 创建一个消息队列
message_queue = []
while True:
data = self.rfile.readline().decode()
if not data:
break # 客户端断开连接
# 接收数据并添加到队列
message_queue.append(data)
# 发送回确认信息
self.wfile.write(b"Message received.")
# 处理收到的所有消息
for message in message_queue:
print(f"Received message from client: {message.strip()}")
self.request.close() # 关闭连接
class SocketServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
allow_reuse_address = True # 允许复用地址
def run_server(host, port):
server = SocketServer((host, port), ThreadedTCPRequestHandler)
print(f"Server is running on {host}:{port}...")
try:
server.serve_forever()
except KeyboardInterrupt:
print("Shutting down the server...")
server.shutdown()
if __name__ == "__main__":
host = '0.0.0.0' # 监听所有IP
port = 9999 # 端口号
run_server(host, port)
```
在这个例子中,每个新的客户端连接会被放在一个新的线程中处理,`ThreadedTCPRequestHandler`负责接收、存储和响应消息。当有新消息到达时,服务器会依次处理队列中的消息。
阅读全文