仿qq聊天系统python
时间: 2023-10-19 08:36:07 浏览: 49
C知道: 仿QQ聊天系统,可以使用Python来实现。首先,你可以使用Socket模块来创建一个简单的聊天服务器和客户端。服务器端负责接收客户端的消息并转发给其他客户端,而客户端则负责发送和接收消息。
以下是一个简单的示例代码:
```python
# 服务器端
import socket
import threading
# 创建一个TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 绑定地址和端口
host = 'localhost'
port = 8888
server_socket.bind((host, port))
# 监听连接
server_socket.listen(5)
# 存储客户端套接字列表
client_sockets = []
client_names = []
def broadcast(message):
for client_socket in client_sockets:
client_socket.send(message)
def handle_client(client_socket):
while True:
try:
message = client_socket.recv(1024)
broadcast(message)
except:
index = client_sockets.index(client_socket)
client_sockets.remove(client_socket)
client_socket.close()
username = client_names[index]
broadcast(f'{username}已下线'.encode('utf-8'))
client_names.remove(username)
break
def accept_clients():
while True:
client_socket, address = server_socket.accept()
client_sockets.append(client_socket)
username = client_socket.recv(1024).decode('utf-8')
client_names.append(username)
broadcast(f'{username}已上线'.encode('utf-8'))
client_socket.send('成功连接到服务器'.encode('utf-8'))
client_socket.send(f'当前在线用户:{client_names}'.encode('utf-8'))
client_socket.send('请输入消息:'.encode('utf-8'))
client_socket_thread = threading.Thread(target=handle_client, args=(client_socket,))
client_socket_thread.start()
accept_clients()
# 客户端
import socket
import threading
# 创建一个TCP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
host = 'localhost'
port = 8888
client_socket.connect((host, port))
# 输入用户名
username = input('请输入用户名:')
client_socket.send(username.encode('utf-8'))
def receive_messages():
while True:
try:
message = client_socket.recv(1024).decode('utf-8')
print(message)
except:
print('连接已断开')
break
def send_messages():
while True:
message = input()
client_socket.send(message.encode('utf-8'))
receive_thread = threading.Thread(target=receive_messages)
receive_thread.start()
send_thread = threading.Thread(target=send_messages)
send_thread.start()
```
这只是一个简单的示例,你可以根据自己的需求进行扩展和修改。希望对你有所帮助!如果有任何问题,可以随时问我。