python大作业
简易聊天室
【设计要求】用 Python 实现基于 socket 的聊天室程序。聊天室分为服务器 端和客户端两部分,服务器端程序主要负责侦听客户端发来的消息,客户端需要 登陆到服务器端才可以实现正常的聊天功能。 服务器端主要功能如下:在特定端口上进行侦听,等待客户端连接。统计在 线人数。当停止服务时,断开所有的用户连接。 客户端的主要功能如下:连接到已经开启聊天服务的服务器端。当服务器端 开启的话,用户可以随时登陆与注销。用户可以向所有人或某一个人发送消息。
【界面要求】要求图形界面实现。
服务端server.py
import socket import threading class ChatServer: def __init__(self, host, port): self.host = host self.port = port self.server_socket = None self.clients = {} def start(self): self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.server_socket.bind((self.host, self.port)) self.server_socket.listen(5) print(f"Server started on {self.host}:{self.port}") while True: client_socket, _ = self.server_socket.accept() threading.Thread(target=self.handle_client, args=(client_socket,)).start() def handle_client(self, client_socket): username = client_socket.recv(1024).decode() self.broadcast_message(f"{username} joined the chat") self.clients[client_socket] = username print(f"{username} connected") while True: try: message = client_socket.recv(1024) if message: self.broadcast_message(f"{username}: {message.decode()}") else: raise Exception("Disconnected") except: client_socket.close() self.broadcast_message(f"{username} left the chat") del self.clients[client_socket] print(f"{username} disconnected") break def broadcast_message(self, message): print(message) for client_socket in self.clients: client_socket.send(message.encode()) if __name__ == '__main__': server = ChatServer('localhost', 8000) server.start()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南