如何用Python實現多工版的udp聊天器

大雄45發表於2021-08-01
導讀 這篇文章主要為大家詳細介紹了Python實現多工版的udp聊天器,文中示例程式碼介紹的非常詳細,具有一定的參考價值,感興趣的小夥伴們可以參考一下
一、案例示例

如何用Python實現多工版的udp聊天器如何用Python實現多工版的udp聊天器

二、案例說明

1、編寫一個有2個執行緒的程式。

2、執行緒1用來接收資料然後顯示。

3、執行緒2用來檢測鍵盤資料然後透過udp傳送資料。

三、參考程式碼
import socket
import threading
 
 
def send_msg(udp_socket):
    """獲取鍵盤資料,並將其傳送給對方"""
    while True:
        # 1. 從鍵盤輸入資料
        msg = input("\n請輸入要傳送的資料:")
        # 2. 輸入對方的ip地址
        dest_ip = input("\n請輸入對方的ip地址:")
        # 3. 輸入對方的port
        dest_port = int(input("\n請輸入對方的port:"))
        # 4. 傳送資料
        udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port))
 
 
def recv_msg(udp_socket):
    """接收資料並顯示"""
    while True:
        # 1. 接收資料
        recv_msg = udp_socket.recvfrom(1024)
        # 2. 解碼
        recv_ip = recv_msg[1]
        recv_msg = recv_msg[0].decode("utf-8")
        # 3. 顯示接收到的資料
        print(">>>%s:%s" % (str(recv_ip), recv_msg))
 
 
def main():
    # 1. 建立套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2. 繫結本地資訊
    udp_socket.bind(("", 7890))
 
    # 3. 建立一個子執行緒用來接收資料
    t = threading.Thread(target=recv_msg, args=(udp_socket,))
    t.start()
    # 4. 讓主執行緒用來檢測鍵盤資料並且傳送
    send_msg(udp_socket)
 
 
if __name__ == "__main__":
    main()

以上就是本文的全部內容,希望對大家的學習有所幫助

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2784523/,如需轉載,請註明出處,否則將追究法律責任。

相關文章