python3-UDP详解

发布时间:2019-07-22 17:40:19编辑:auto阅读(1792)

    UDP 详解

    用户数据报协议(user Datagram protocol)
    这个通信协议发送不管对方是否接收到,可以用通过对方接到回复一个标识来记录是否成功通信
    适用于广播的应用程序(象发邮件模式)
    

    udp

    python UDP (发送接收端)

    """udp服务器"""
    import socket
    
    
    def main():
        # 创建一个服务器
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        udp_socket.sendto('xxx'.encode('utf-8'),('127.0.0.1',8090))
        udp_socket_recv = udp_socket.recvfrom(1024)    # 1024 代表字节数
        print(udp_socket_recv)      # (b'1', ('192.168.27.119', 8090))
    
        print(udp_socket_recv[0].decode('utf-8'))
        print(udp_socket_recv[1])
    
        udp_socket.close()
    
    
    if __name__ == '__main__':
        main()

    python UDP 绑定固定端口号

    """udp服务器"""
    import socket
    
    
    def main():
        # 创建一个服务器
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        udp_socket.bind(('',8888))  # 绑定固定端口
    
        udp_socket.sendto('xxx'.encode('utf-8'),('127.0.0.1',8090))  
        udp_socket_recv = udp_socket.recvfrom(1024)    # (b'1', ('192.168.27.119', 8090))
        print(udp_socket_recv)
    
        print(udp_socket_recv[0].decode('utf-8'))
        print(udp_socket_recv[1])
    
        udp_socket.close()
    
    
    if __name__ == '__main__':
        main()
    

    python UDP 简易聊天器

    """聊天小程序--单任务版(只能发一次回一次)"""
    import socket
    
    
    def set_receive_info(rece_info):
        rece_ip = input("请输入待接收方的ip:")
        rece_port = input("请输入待接收的端口号:")
        rece_info = (rece_ip, int(rece_port))
        print("接收方主机%s记录成功" % str(rece_info))
        return rece_info
    
    
    def send_message(udp_socket, rece_info):
        send_data = input("输入发送的数据:")
    
        udp_socket.sendto(send_data.encode(), rece_info)
        print('发送成功.....')
    
    
    def receive_message(udp_socket):
        rec_data = udp_socket.recvfrom(1024)
        print('接收到数据,正在解析....', rec_data)
        print("收到消息:%s" % rec_data[0].decode('gbk'))
    
    
    def main():
        # 创建一个套接字
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 为这个套接字绑定一个ip和端口号
        udp_socket.bind(("192.168.206.1", 9999))
        rece_info = ''  # 待接收方的主机信息
        while True:
            print("1.发送消息,2.接收消息,3.重置收信人,4.退出")
            num = input("请输入:")
            if num == "1":
                if rece_info == '':
                    rece_info = set_receive_info(rece_info)
    
                send_message(udp_socket, rece_info)
            elif num == '2':
                receive_message(udp_socket)
            elif num == '4':
                break
            elif num == '3':
                rece_info = set_receive_info(rece_info)
            else:
                print('输入无效')
    
        # 关闭一个套接字
        udp_socket.close()
    
    
    if __name__ == '__main__':
        main()
    

关键字