Python day04_UDP

作者: g_s_007 | 来源:发表于2018-05-23 23:10 被阅读0次
    UDP 简介
    
    UDP : user datagram protocol  用户数据报协议
    
    UDP 的特点:不用面向连接 不可靠 传输速度快 适合做广播
    

    上代码:

    一、 udp 发送数据:

    import socket
    
    # 判断模块是否是主模块,判断是否是程序的入口
    
    if __name__ == '__main__':
    
        # 1. 创建udp的协议的socket
    
        # AF_INET: 表示ip地址的类型, ipv4
    
        # SOCK_DGRAM: 表示udp传输协议类型
    
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
        # 2. 准备发送的数据
    
        send_content = "哈哈,学习了socket"
    
        # 总结: 乌版图网络调试助手使用utf-8解码,window网络调试助手使用gbk进行解码
    
        # 字符串转二进制->字符串编码成为二进制数据
    
        send_data = send_content.encode("gbk")
    
        print(send_data)
    
        # 3. 发送数据
    
        udp_socket.sendto(send_data, ("192.168.36.110", 9090))
    
        # 4. 关闭socket
    
        udp_socket.close()
    

    二、UDP 接收数据

    import socket
    
    if __name__ == '__main__':
    
        # 创建udpsocket
    
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
        # 发送数据
    
        udp_socket.sendto("哈哈,我又来了!".encode("gbk"), ("192.168.36.110", 9090))
    
        # 接收数据 1024:表示每次接收最大的字节数
    
        # 提示: recvfrom 会阻塞程序,等待接收到数据以后代码才能继续往下执行
    
        recv_data, ip_port = udp_socket.recvfrom(1024)
    
        # 对二进制数据进行解码
    
        # 解码:把二进制转成字符串
    
        recv_content = recv_data.decode("gbk")
    
        print(recv_content, ip_port)
    
        udp_socket.close()
    

    小项目 UDP 聊天器

    # 导入socket
    
    import socket
    
    def send_msg():
    
        # 准备发送数据
    
        send_info = input("请输入要发送的内容:")
    
        send_data = send_info.encode("gbk")
    
        # 输入window 端的IP 以及程序的端口号
    
        dest_ip = input("请输入对方的IP:")
    
        dest_port = input("请输入对方的端口号:")
    
        # 发送数据到windows
    
        udp_socket.sendto(send_data, (dest_ip,int(dest_port)))
    
    def recv_msg():
    
        # 创建udp socket
    
        #udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
        # 准备接收数据
    
        recv_info = udp_socket.recvfrom(1024)
    
        print(recv_info[0].decode("gbk"), recv_info[1], sep=">>>")
    
    if __name__ == '__main__':
    
        # 创建udp socket
    
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
        while True:
    
            cmd = input("请输入要执行的指令:1[发送数据],2[接收数据],3[退出程序]")
    
            if cmd == '1':
    
                send_msg()
    
            elif cmd == '2':
    
                recv_msg()
    
            elif cmd == '3':
    
                break
    
        # 关闭socket
    
        udp_socket.close()

    相关文章

      网友评论

        本文标题:Python day04_UDP

        本文链接:https://www.haomeiwen.com/subject/xiodjftx.html