python版多線程聊天功能

import socket
import threading


def recv_msg(udp_socket):
    while True:
        # 1 接收數據
        recv_msgs = udp_socket.recvfrom(1024)
        # 2 解碼
        recv_ip = recv_msg[1]
        recv_msgs = recv_msg[0].decode("utf-8")
        # 顯示接收到的數據
        print(">>>%s:%s" % (str(recv_ip),recv_msg))


def send_msg(udp_socket):
    """獲取鍵盤數據,並將其發送給對方"""
    while True:
        # 從鍵盤獲取輸入
        msg = input("\n請輸入要發送的數據:")
        # 輸入對方的ip地址
        dest_ip = input("\n請輸入對方的ip地址:")
        # 輸入對方的端口號
        dest_port = input("\n請輸入對方的端口號:")
        # 發送數據
        udp_socket.sendto(msg.encode("utf-8"),(dest_ip, dest_port))


def main():
    # 創建套接字
    udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    # 綁定本地信息
    udp_socket.bind('', 9090)

    # 創建一個子線程用來接收數據
    t = threading.Thread(target=recv_msg, args=(udp_socket,))
    t.start()

    # 讓主線程用來檢測鍵盤數據併發送
    send_msg(udp_socket)


if __name__ == "__main__":
    main()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章