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()

 

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