天天看點

多線程版聊天 | 手把手教你入門Python之一百

上一篇: 多線程實作多任務 | 手把手教你入門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()           

配套視訊