python3:用threading+UDP实现的一个可同时收发聊天信息的脚本

需要下载一个网络调试助手来模拟为udp的客户端. 

脚本为udp的server端,可以实现同时收发信息。

import socket
import threading


def send_data(udp_socket, dest_ip, dest_port):
    """发送数据"""

    while True:
        data_send = input('请输入要发送的数据:').encode('gbk')
        data_send = udp_socket.sendto(data_send, (dest_ip, dest_port))


def recv_data(udp_socket):
    """接收数据"""

    while True:
        try:
            msg, addr = udp_socket.recvfrom(1024)
            print(f'接收的数据为:{msg.decode("gbk")}')
        except ConnectionResetError:
            pass


def main():
    # 1.创建socket
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 2.绑定ip_port
    udp_socket.bind(("", 7890))

    # 3.client端的ip_port
    dest_ip, dest_port = ("192.168.31.187", 8080)

    # 4.用多线程实现全双工收发信息.
    try:
        t_recv = threading.Thread(target=recv_data, args=(udp_socket, ))
        t_send = threading.Thread(target=send_data, args=(udp_socket,dest_ip, dest_port))
        t_recv.start()
        t_send.start()
    except Exception:
        # 5.关闭socket
        udp_socket.close()


if __name__ == '__main__':
    main()

 执行的主界面如下:

python3:用threading+UDP实现的一个可同时收发聊天信息的脚本