多任务UDP聊天器

任务说明:

  • 编写一个有2个线程的程序
  • 线程1用来接收数据然后显示
  • 线程2用来检测键盘数据然后通过udp发送数据

import  socket
import threading


# 发送数据函数
def send_msg(udp_socket):
    send_content = input("请输入您要发送的数据:")
    send_data = send_content.encode("gbk")
    dest_ip = input("请输入对方的ip地址:")
    dest_port = int(input("请输入对方的端口号:"))
    # 发送数据
    udp_socket.sendto(send_data, (dest_ip, dest_port))

# 接收数据函数
def recv_msg(udp_socket):
    while True:
        # 接收数据
        recv_data, ip_port = udp_socket.recvfrom(1024)
        # 解码数据
        recv_content = recv_data.decode("gbk")
        print(recv_content, ip_port)

if __name__ == '__main__':
    # 创建socket
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 绑定端口
    udp_socket.bind(("", 8080))
    # 创建接收数据的线程
    recv_thread = threading.Thread(target=recv_msg, args=(udp_socket,))
    # 守护主线程
    recv_thread.setDaemon(True)
    recv_thread.start()

    while True:
        option = input("请输入功能选项1.发送 2.退出:")
        if option == '1':
            send_msg(udp_socket)
        elif option == '2':
            break

    # 关闭socket
    udp_socket.close()


猜你喜欢

转载自blog.csdn.net/anyiVIP/article/details/79783357