python多线程聊天两人,并且俩人可以互相不按次序对话
时间: 2023-07-06 11:07:10 浏览: 128
可以使用Python的socket和threading库实现多线程聊天。其中,socket库用于实现网络通信,threading库用于实现多线程处理。以下是一个简单的示例代码:
```python
import socket
import threading
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_socket.bind(('127.0.0.1', 8888))
# 监听客户端连接
server_socket.listen(5)
# 客户端列表
clients = []
# 客户端处理线程
def handle_client(client_socket, client_addr):
print(f'客户端 {client_addr} 已连接')
clients.append(client_socket)
while True:
# 接收客户端消息
msg = client_socket.recv(1024).decode('utf-8')
if not msg:
# 客户端断开连接
clients.remove(client_socket)
print(f'客户端 {client_addr} 已断开')
break
# 发送消息给其他客户端
for c in clients:
if c != client_socket:
c.sendall(msg.encode('utf-8'))
# 关闭客户端socket
client_socket.close()
# 主线程
while True:
# 等待客户端连接
client_socket, client_addr = server_socket.accept()
# 创建客户端处理线程
client_thread = threading.Thread(target=handle_client, args=(client_socket, client_addr))
client_thread.start()
```
运行该代码后,可以在两个不同的终端窗口中分别运行以下代码来模拟两个客户端:
```python
import socket
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect(('127.0.0.1', 8888))
# 发送消息给服务器
while True:
msg = input('请输入消息:')
client_socket.sendall(msg.encode('utf-8'))
```
这样,两个客户端就可以互相不按次序地发送消息了。
阅读全文