用python写 实现多人聊天室
时间: 2023-07-18 16:38:36 浏览: 105
实现一个多人聊天室可以使用 Python 的 Socket 模块和多线程技术。下面是一个简单的实现:
1. 创建服务器
```
import socket
import threading
# 服务器地址和端口
HOST = 'localhost'
PORT = 9999
# 创建 TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen(5)
# 处理客户端连接
def handle_client(client_socket, addr):
while True:
try:
# 接收客户端消息
data = client_socket.recv(1024)
if not data:
break
# 广播客户端消息给其他客户端
for c in clients:
if c != client_socket:
c.sendall(data)
except:
break
# 关闭客户端连接
client_socket.close()
clients.remove(client_socket)
# 处理新的客户端连接
def accept_clients():
while True:
client_socket, addr = server_socket.accept()
clients.append(client_socket)
print('New client connected:', addr)
# 开始处理客户端消息
threading.Thread(target=handle_client, args=(client_socket, addr)).start()
clients = []
# 开始监听客户端连接
accept_clients()
```
2. 创建客户端
```
import socket
import threading
# 服务器地址和端口
HOST = 'localhost'
PORT = 9999
# 处理服务器消息
def handle_server(server_socket):
while True:
data = server_socket.recv(1024)
if not data:
break
# 打印服务器消息
print(data.decode())
# 处理用户输入消息
def handle_user_input(client_socket):
while True:
data = input()
client_socket.sendall(data.encode())
# 连接服务器
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.connect((HOST, PORT))
# 开始处理服务器消息和用户输入
threading.Thread(target=handle_server, args=(server_socket,)).start()
threading.Thread(target=handle_user_input, args=(server_socket,)).start()
```
这样就可以实现一个简单的多人聊天室了。需要注意的是,这个实现还比较简单,没有实现用户认证、加密传输等功能,如果需要更加安全的聊天室,还需要进行更多的开发和测试。
阅读全文