上一篇: 多線程實作多任務 | 手把手教你入門Python之九十九 下一篇: 線程安全 | 手把手教你入門Python之一百零一 本文來自于千鋒教育在阿裡雲開發者社群學習中心上線課程 《Python入門2020最新大課》 ,主講人姜偉。
多線程版聊天
實作一台電腦上聊天。
import socket, sys
import threading
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('192.168.31.199', 8080))
def send_msg():
while True:
msg = input('請輸入您要發送的内容:')
s.sendto(msg.encode('utf8'), ('192.168.31.199', 9090))
if msg == 'exit':
break
def recv_msg():
while True:
# data的資料類型是一個元組
# 元組裡第0個元素是接收到的資料
# 元組裡第1個元素是發送方的ip位址和端口号
data, addr = s.recvfrom(1024)
print('接收到了{}位址{}端口的消息:{}'.format(addr[0], addr[1], data.decode('utf8')),
file=open('消息記錄.txt', 'a', encoding='utf8'))
t1 = threading.Thread(target=send_msg)
t2 = threading.Thread(target=recv_msg)
t1.start()
t2.start()