python及时聊天系统
时间: 2023-10-15 15:27:36 浏览: 46
Python实现即时聊天系统的方式有很多。以下是一个简单的示例:
```python
import socket
import threading
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_socket.bind(('localhost', 5000))
# 监听客户端连接
server_socket.listen(5)
# 存储客户端连接的线程
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)
broadcast(f'{nickname}离开了聊天室!'.encode('utf-8'))
break
def receive():
while True:
# 接受新的客户端连接
client, address = server_socket.accept()
print(f'连接地址:{str(address)}')
# 发送提示信息要求客户端输入昵称
client.send('NICK'.encode('utf-8'))
nickname = client.recv(1024).decode('utf-8')
nicknames.append(nickname)
clients.append(client)
# 广播新用户加入的消息
print(f'欢迎 {nickname} 加入聊天室!')
broadcast(f'{nickname} 加入了聊天室!'.encode('utf-8'))
# 启动一个新的线程处理客户端连接
client.send('成功连接到服务器!'.encode('utf-8'))
thread = threading.Thread(target=handle, args=(client,))
thread.start()
def start():
print('服务器已启动,等待客户端连接...')
receive()
start()
```
这是一个简单的基于Socket的单线程即时聊天系统。它使用了Python的socket和threading模块来实现客户端和服务器之间的通信。在代码中,服务器监听来自客户端的连接,并将接收到的消息广播给所有连接的客户端。