范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

PythonUDP协议网络编程四

  今天继续和大家分享Python UDP 协议网络编程系列知识。
  今日主题:使用Python 实现的下载文件的客户端功能。
  温馨提示:
  今日内容与上一篇文章Python UDP 协议网络编程《三》具有关联性,如果Python UDP 协议网络编程《三》没有阅读的小伙伴,建议先阅读后,再来学习今天的内容,有助于更好的理解哟。
  理论内容较少,今天更偏实战性,以下实现代码需仔细分析、理解每一行代码的作用及相互间的关联关系,并自行搭建本地环境将代码运行起来,在解决问题的过程中,通过思考与实践才能更好的理解本文主题。   1import struct  2from socket import socket,AF_INET,SOCK_DGRAM  3  4filename="QR.png" #定义要下载的文件名  5ftp_server_ip="127.0.0.1" #定义服务器的ip地址  6  7def download_file():  8    print("step1:准备开始下载"+filename+"文件")  9    send_data=struct.pack("!H%dsb5sb"%len(filename),1,filename.encode("utf-8"),0,b"octet",0) #封装一个读文件请求,上面的步骤1 10    print("step2:建立一个udp socket连接") 11    udp_socket=socket(AF_INET,SOCK_DGRAM) #创建一个udp socket 12    print("step3:向tftp ip=127.0.0.1 port=69服务器发送读写请求") 13    udp_socket.sendto(send_data,(ftp_server_ip,69)) #向tftp 服务器发送读写请求 14    print("step4:新建一个文件句柄,为了接收想下载的文件内容") 15    fhandle=open(filename,"ab")#在本地创建一个文件,a表示追加,b表示二进制 16    while 1: 17        print("step5:开始接收消息,消息内容为接收的数据和服务器信息") 18        recv_data,server_info=udp_socket.recvfrom(1024) #接收数据,返回的是二维元组,第一个是接收的数据,第二个是服务器ip and port,上面的步骤2 19        operation_code=struct.unpack("!H",recv_data[:2]) #获取操作码 20        ack_num=struct.unpack("!H",recv_data[2:4]) #获取数据块 21        print("step6: 获取操作码:", operation_code, "和数据块编号", ack_num) 22        print("step7: 打印:the server of info is:",server_info) 23        if operation_code==5:#5就是错误码 24            print("the file is not found") 25            break 26        print("step8:打印接收的数据:",recv_data) 27        print("step9:开始写文件") 28        fhandle.write(recv_data[4:])#写内容到文件,因为前四个字节是操作码和数据块,所以要从第四位开始写文件 29        print("step10:判断文件是否读取完成") 30        if(len(recv_data)<516):#判断文件是否读取完成,上面的步骤4 31            fhandle.close() 32            break 33        """ 34        3、ACK 35        操作码  +  块编码 36        2Bytes     2Bytes 37        """#因为发布ACK包的操作码与块编码都是2个字节,所以如下用的是HH 38        print("step10:封装确认包信息") 39        send_data1=struct.pack("!HH",4,ack_num[0]) #封装确认包信息 40        print("step11:获取服务器端ip and port") 41        server_port=server_info[1]#获取服务器端发送数据的随机端口 42        server_address=server_info[0] 43        print("step12:发送ACK 确认包信息") 44        udp_socket.sendto(send_data1,(server_address,server_port))#发送确认包信息,上面的步骤3 45    print("step13:文件"+filename+"下载成功!!!") 46 47def user_login(): 48    udp_socket = socket(AF_INET, SOCK_DGRAM)  # 建议upd连接 49    local_address = ("127.0.0.1", 8000)  # 定义了本机的ip and port 50    udp_socket.bind(local_address)  # 绑定本机的ip and port 51    resvice_address=("127.0.0.1", 69) #定义了接收消息机器的ip and port 52    data="admin 123456" 53    udp_socket.sendto(str(data).encode("utf-8"),resvice_address)#向接收消息机器发送消息 54    udp_socket.close() 55    udp_secv_msg() 56 57def udp_secv_msg(): 58    udp_sockets = socket(AF_INET, SOCK_DGRAM)  # 建立udp socker连接 59    server_address = ("127.0.0.1", 70)  # 定义了服务端的ip and port 60    udp_sockets.bind(server_address)  # 服务端绑定ip and port 61    recv_data = udp_sockets.recvfrom(1024)  # 收数据等待 62    print("接收的内容:", recv_data[0].decode("utf-8"))  # 显示收到的信息 63    print("发送人的地址:", recv_data[1])  # 显示收到的信息 64    udp_sockets.close() 65 66if __name__ == "__main__": 67    #第一步登录tftp服务器 68    user_login() 69    #第二步是下载文件 70    download_file()

微信里被一个卖鞋的骗了190元,然后就被删好友了,报警和投诉微信团队能找回吗,还可以怎么找回钱财?曾经遇到过微信中5000元不翼而飞。被骗被盗这是两个概念虽然都是钱不见了。被骗你要提供被骗的详细过程证明,警方确认你是被骗了,那你就可以用这个证明联系财付通客服。看他给你怎么处理,有哪些适用于小团队协作的Web软件?Web应用程序一个好处是用户可通过浏览器访问,不用下载客户端。下面推荐几款我正在用的软件,都非常不错,大家查找的时候直接在浏览器搜索软件名就行简道云适合团队需要管理数据的团队推荐指蔚来赴港上市2021年前三季度共交付66395辆汽车品玩2月28日讯,蔚来宣布已通过香港交易所聆讯,获得在港交所主板二次上市的原则上批准,并已发布相关上市文件。本次上市采用介绍上市的方式,不涉及新股发行及资金募集。公司计划于2022如果地球的大气层被我们破坏,那是连流浪都不能挽回的悲剧流浪地球的故事很有想象力,但如果地球的大气层被我们破坏,那是连流浪都不能挽回的悲剧。2月26日下午,来自中国科学院大连化学物理研究所的李灿院士在墨子沙龙发表演讲。2050年前,努力干货!一文读懂元宇宙NFTGameFiDefi之间的关系在2018年及之前,区块链行业尚处于发展早期,因此机构投资标的多半以基础设施为主,比如底层公链产业区块链服务平台行业信息平台和相关服务机构等。在2019年之后,机构的投资则相对更为字节跳动28岁员工猝死后,怀孕妻子含泪卖房成年人的身后我刚毕业工作那年,朋友圈总会被这样的文章刷屏你的同龄人正在飞速抛弃你。文章里是各种数据实例的对比你的起步工资,是否低于市场平均值。你所在城市的购房平均年龄,又降到了多少岁。同龄人的华为Mate40EPro上架,支持5G,售价6499元,网友给出犀利评价前些天有消息称,华为将在3月发布多款新品,其中还包括搭载麒麟9000L芯片,支持5G网络的华为Mate40EPro。众所周知,在过去一年的时间里,华为所推出的手机基本上都只支持4G工信部发话,要求手机预装软件必须可卸载,网友直呼干得漂亮近期,工信部发文拟对手机等设备的预装软件行为进行规范,明确要求除基本功能软件外的预装软件必须可以卸载,且要提供一个安全方便的卸载方式给用户选择,并且要求同一基本功能的预装软件最多只iPhone15ProMax概念机这样的双屏幕才豪横,后置3摄融入2寸副屏如今大家都看腻了苹果手机的刘海屏,反观是果粉已经习惯了这样的设计。但可以实锤的是,未来的iPhone肯定会让刘海走向消失。根据外媒曝光的iPhone15ProMax概念设计图显示,特鲁多下令镇压抗议,马斯克竟把其比作希特勒?遭网友惨骂加拿大首都的游行示威抗议行动引发了加拿大内乱,在这个时候,加政府另一个烦心的事又出现了,作为美国富豪的特斯拉CEO马斯克在自己的社交平台认同了加抗议行为,并且把加总理特鲁多形容成为乌克兰局势最终走向何方?作为一个局外人,从新闻信息量给我的感觉,简要总结乌克兰局势,或将有以下几个方面的结果1。乌克兰现任总统泽连斯基下台或者逃亡国外,乌克兰政权改组,由俄罗斯扶持的代理人统治,俄罗斯撤军
副厂镜头怎么选龙变马定图广角国产镜头也挺好随着人们生活水平的提高,越来越多的人喜欢上了摄影,现在去公园景区,挎着单反相机的人随处可见。玩摄影的人虽说很多,但是专业的摄影人毕竟是少数,大部分都是小白!他们面对琳琅满目的镜头群凤蝶为啥是五彩斑斓的?或源于基因快速进化科技日报记者赵汉斌蝴蝶因其丰富的色彩和形态等多样性,长期以来是昆虫生态与进化研究的重要主题。近日,中国科学院昆明动物研究所进化基因组学与基因起源学科组在蝴蝶颜色进化方面取得新进展,比亚迪走高端,不仅仅难在频频自燃文丨宁缺编辑丨百进来源丨正经社(IDzhengjingshe)卸掉燃油汽车这个包袱后,比亚迪的烦恼并没有减少多少。新能源大势的明朗化,刀片电池的大出风头,DMi超级混动平台的竞争力三星GalaxyS22重度使用一个月,都说它很糟糕,但我想说几句好话很多人给三星GalaxyS22打出了超低的评价,认为它是一款很糟糕的手机,我也翻看了不少用户评价,发现大家吐槽的缺点基本就那几个,因此我觉得大部分给出差评的用户,都是没有提前了解三专项债拓展新领域多维度消费助推经济稳增长本报记者李正5G技术的进一步普及,将直接刺激居民对5G相关产品(如手机智能家电家居等)的消费需求。金融科技专家阿里云MVP马超在接受证券日报记者采访时如是说。国常会提出的加快重点项120W极速快充黑科技下放!Redmi旗舰强攻中级市场不只小米12PRO问鼎安卓旗舰机皇企图心十足,小米台湾今(14)天宣布,将120W极速快充的黑科技,下放到中阶旗舰RedmiNote11Pro5G,再为中阶机市场立下新的里程标竿。莫名接到京东信贷放款电话京东金融称没这个部门信网4月18日讯(首席记者杜杲燃)我从没申请过任何借款,怎么突然给我打电话要放款呢?最近,徐先生突然接到了一个自称是京东信贷的电话,对方称有一笔1万元贷款可以贷给他,徐先生问及详情100多组装一台电脑主机,这番操作我都惊叹朋友给我说他花了100多组装了一台电脑,刚开始我不相信,后来我看了他的网上订单明细,还有他用鲁大师评测了一下分数,我都惊讶,跑的分数还可以,我都几乎夸他是个人才了?!电脑配置都是二大眼橙X20影音娱乐双重体验,直接拉满使用体验随着身边朋友越来越多的选择入手了投影仪来代替家中的电视,(特别是家里熊孩子把电视打烂的不止一两例出现后)相较于传统电视的体积庞大及不便移动等缺点,而投影仪的小巧便携,且呈现出的视听榕哥烙科第416期骨传导耳机那么贵只能听个响?榕哥以前也总讲,人类的基因可是觉得好吃懒做才是生存之道,健身那肯定是逆天行事的。所以无论是擼铁还是跑步,能自带点背景音乐那都是极美的,至少能缓解一点点无聊和痛苦嘛。最近健身圈有个神13代酷睿笔记本处理器现身跑分轻松胜过i912900HKIntel12代酷睿产品力上佳,通过大小核的架构形式,桌面成功做到16核,笔记本端也上到了14核,起码核心数方面完全不吃亏了。13代酷睿笔记本平台工程版处理器(RaptorLake