用python写一个聊天室的代码
时间: 2023-06-02 11:03:37 浏览: 64
好的,我可以为您提供一个简单的聊天室的 Python 代码,您可以根据自己的需求进行修改和扩展:
```python
import socket
import threading
# 设置服务器相关信息
server_host = '127.0.0.1'
server_port = 5555
# 创建服务器套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 使用服务器套接字绑定地址和端口号
server_socket.bind((server_host, server_port))
# 设置监听队列的最大长度为 10
server_socket.listen(10)
# 客户端连接列表
clients = []
nicknames = []
# 广播消息给所有客户端
def broadcast(message):
for client in clients:
client.send(message)
# 处理客户端消息
def handle(client):
while True:
try:
message = client.recv(1024)
broadcast(message)
except:
index = clients.index(client)
clients.remove(client)
client.close()
nickname = nicknames[index]
nicknames.remove(nickname)
break
# 接受客户端连接请求并进行处理
def receive():
while True:
# 等待客户端连接
client, address = server_socket.accept()
print(f"已连接 {str(address)}")
# 发送欢迎消息给客户端
client.send("欢迎加入聊天室!请设置您的昵称:".encode('utf-8'))
# 将客户端和昵称添加到列表
clients.append(client)
nickname = client.recv(1024).decode('utf-8')
nicknames.append(nickname)
# 广播新用户加入消息
print(f"昵称: {nickname}")
broadcast(f"{nickname} 加入了聊天室!\n".encode('utf-8'))
# 开启线程处理客户端消息
thread = threading.Thread(target=handle, args=(client,))
thread.start()
# 启动服务器
print("聊天室正在运行……")
receive()
```
我们使用 `socket` 模块来实现聊天室的网络通信功能。在启动服务器之后,我们监听客户端的连接请求,然后创建线程来处理客户端的消息,最后通过广播将消息发送给所有客户端。当客户端断开连接时,我们从客户端列表和昵称列表中删除客户端,并广播此用户已离开的消息。
请注意,这只是一个简单的示例,还可以根据实际需求做出其他修改和扩展。