Python利用socket实现多线程聊天
时间: 2023-11-30 16:05:07 浏览: 30
可以使用Python中的socket和threading模块来实现多线程聊天。以下是一个简单的示例代码:
```python
import socket
import threading
# 服务器地址和端口
SERVER_ADDR = ('localhost', 12345)
def handle_receive(sock):
while True:
data = sock.recv(1024)
if not data:
break
# 处理接收到的数据
print(data.decode())
def handle_send(sock):
while True:
data = input()
if not data:
break
# 发送数据
sock.send(data.encode())
# 创建socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
sock.connect(SERVER_ADDR)
# 创建发送和接收线程
receive_thread = threading.Thread(target=handle_receive, args=(sock,))
receive_thread.start()
send_thread = threading.Thread(target=handle_send, args=(sock,))
send_thread.start()
# 等待发送和接收线程结束
send_thread.join()
receive_thread.join()
# 关闭socket连接
sock.close()
```
在该示例中,我们创建了一个socket连接到服务器地址和端口。然后,我们创建了两个线程:一个用于接收数据,另一个用于发送数据。在接收线程中,我们使用socket.recv()来接收数据,并在控制台上打印出来。在发送线程中,我们使用input()来获取用户输入,并使用socket.send()来发送数据。最后,我们等待两个线程结束,关闭socket连接。