多线程--实现多线程版udp聊天器案例

线程

线程可以简单理解为同一进程中有多个计数器,每个线程的执行时间不确定,而每个进程的时间片相等,线程是操作系统调度执行的最小单位。

多线程版udp聊天器案例

在这里插入图片描述
案例实现:

import socket
import threading


def send_msg(udp_more_socket,dest_ip,dest_port):
    """获取键盘数据,并将数据发送给对方"""
    while True:
        send_data = input("请输入要发送的内容:")
        udp_more_socket.sendto(send_data.encode("utf-8"),(dest_ip,dest_port))

def recv_msg(udp_more_socket):
    """接受并显示数据"""
    while True:
        # 接收数据
        recv_data = udp_more_socket.recvfrom(1024)
        #解码并显示接收到的数据
        print("接收到%s的信息为%s" % (recv_data[1],recv_data[0].decode("utf-8")))


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

    #绑定本地信息
    udp_more_socket.bind(("",7890))

    dest_ip = input("请输入对方ip:")
    dest_port = int(input("请输入对方port:"))

    #创建子线程收发数据
    recv = threading.Thread(target=recv_msg, args=(udp_more_socket,))
    send = threading.Thread(target=send_msg,args=(udp_more_socket,dest_ip,dest_port))
    recv.start()
    send.start()

    recv.join()
    send.join()

    udp_more_socket.close()


if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/weixin_44850984/article/details/89243090