肥宅钓鱼网
当前位置: 首页 钓鱼百科

python tcp数据流解析(PythonUDP协议网络编程六)

时间:2023-07-11 作者: 小编 阅读量: 3 栏目名: 钓鱼百科

pythontcp数据流解析今天继续和大家分享PythonUDP协议网络编程系列知识。如果PythonUDP协议网络编程《四》没有阅读的小伙伴,建议先阅读后,再来学习今天的内容,会有一个比较直观的对比。

python tcp数据流解析?今天继续和大家分享Python UDP 协议网络编程系列知识,我来为大家讲解一下关于python tcp数据流解析?跟着小编一起来看一看吧!

python tcp数据流解析

今天继续和大家分享Python UDP 协议网络编程系列知识。

今日主题:Python 实现的使用命令行进行文件下载的功能。

温馨提示:今日内容与前期推文Python UDP 协议网络编程《四》具有一定的关联性,是在该文章的基础上进行的再一次改造。如果Python UDP 协议网络编程《四》没有阅读的小伙伴,建议先阅读后,再来学习今天的内容,会有一个比较直观的对比。

今日分享内容与已分享的Python UDP 协议网络编程系列推文一样,理论内容较少,今天更偏实战性,以下实现代码需仔细分析、理解每一行代码的作用及相互间的关联关系,可与Python UDP 协议网络编程《四》实现的功能进行对比,相信你会发现其中的不同。

同时建议小伙伴们自行搭建本地环境将代码运行起来,在解决问题的过程中,通过思考与实践才能更好的理解本文主题。

1import sys 2import struct 3from socket import socket,AF_INET,SOCK_DGRAM 4 5filename=""#定义要下载的文件名 6ftp_server_ip=""#定义服务器的ip地址 7username=""#用户名 8password=""#密码 910def run_cmd():11global filename,ftp_server_ip,username,password12if(len(sys.argv)!=3):13print("命令行格式不对,请参照以下标准")14print("="*100)15print("for example:")16print()17print("python python_tftp_download.py username:password@ftp_server_ip filename")18print("=" * 100)19exit()20else:21filename=sys.argv[2]22all=sys.argv[1]23username=str(all).split(":")[0]24password=str(all).split("@")[0].split(":")[1]25ftp_server_ip=str(all).split("@")[1]26print(ftp_server_ip)2728def download_file():29print("step1:准备开始下载" filename "文件")30send_data=struct.pack("!H%dsb5sb"%len(filename),1,filename.encode("utf-8"),0,b'octet',0) #封装一个读文件请求,上面的步骤131print("step2:建立一个udp socket连接")32udp_socket=socket(AF_INET,SOCK_DGRAM) #创建一个udp socket33print("step3:向tftp ip=127.0.0.1 port=69服务器发送读写请求")34udp_socket.sendto(send_data,(ftp_server_ip,69)) #向tftp 服务器发送读写请求35print("step4:新建一个文件句柄,为了接收想下载的文件内容")36fhandle=open(filename,'ab')#在本地创建一个文件,a表示追加,b表示二进制37while 1:38print("step5:开始接收消息,消息内容为接收的数据和服务器信息")39recv_data,server_info=udp_socket.recvfrom(1024) #接收数据,返回的是二维元组,第一个是接收的数据,第二个是服务器ip and port,上面的步骤240operation_code=struct.unpack("!H",recv_data[:2]) #获取操作码41ack_num=struct.unpack("!H",recv_data[2:4]) #获取数据块42print("step6: 获取操作码:", operation_code, "和数据块编号", ack_num)43print("step7: 打印:the server of info is:",server_info)44if operation_code==5:#5就是错误码45print("the file is not found")46break47print("step8:打印接收的数据:",recv_data)48print("step9:开始写文件")49fhandle.write(recv_data[4:])#写内容到文件,因为前四个字节是操作码和数据块,所以要从第四位开始写文件50print("step10:判断文件是否读取完成")51if(len(recv_data)<516):#判断文件是否读取完成,上面的步骤452fhandle.close()53break54'''553、ACK56操作码块编码572Bytes2Bytes58'''#因为发布ACK包的操作码与块编码都是2个字节,所以如下用的是HH59print("step10:封装确认包信息")60send_data1=struct.pack("!HH",4,ack_num[0]) #封装确认包信息61print("step11:获取服务器端ip and port")62server_port=server_info[1]#获取服务器端发送数据的随机端口63server_address=server_info[0]64print("step12:发送ACK 确认包信息")65udp_socket.sendto(send_data1,(server_address,server_port))#发送确认包信息,上面的步骤366print("step13:文件" filename "下载成功!!!")6768def user_login(data):69udp_socket = socket(AF_INET, SOCK_DGRAM)# 建议upd连接70local_address = ('127.0.0.1', 8001)# 定义了本机的ip and port71udp_socket.bind(local_address)# 绑定本机的ip and port72resvice_address=('127.0.0.1', 69) #定义了接收消息机器的ip and port73udp_socket.sendto(str(data).encode("utf-8"),resvice_address)#向接收消息机器发送消息74print("登录成功")75udp_socket.close()76udp_secv_msg()7778def udp_secv_msg():79print("开始接收消息")80udp_sockets = socket(AF_INET, SOCK_DGRAM)# 建立udp socker连接81server_address = (ftp_server_ip, 70)# 定义了服务端的ip and port82udp_sockets.bind(server_address)# 服务端绑定ip and port83print("正在接收消息")84recv_data = udp_sockets.recvfrom(1024)# 收数据等待85print("the data is:",recv_data)86print('接收的内容:', recv_data[0].decode('utf-8'))# 显示收到的信息87print('发送人的地址:', recv_data[1])# 显示收到的信息88udp_sockets.close()8990if __name__ == '__main__':91#命令格式校验92run_cmd()93data = username " " password94print(data)95#第一步登录tftp服务器96user_login(data)97#第二步是下载文件98download_file()

1执行的结果为: 2(venv) D:\BaiduNetdiskDownload\ows-project\wechat\docker-compose1>python pythonFFTP_download_command.py admin:123456@127.0.0.1 requirements.txt 3127.0.0.1 4admin 123456 5登录成功 6开始接收消息 7正在接收消息 8the data is: (b'\xe7\x99\xbb\xe5\xbd\x95\xe6\x88\x90\xe5\x8a\x9f,\xe5\x8f\xaf\xe4\xbb\xa5\xe5\xbc\x80\xe5\xa7\x8b\xe4\xb8\x8a\xe4\xbc\xa0\xe4\xb8\x8b\xe8\xbd\xbd\x 9e6\x96\x87\xe4\xbb\xb6\xe4\xba\x86\xef\xbc\x81\xef\xbc\x81\xef\xbc\x81', ('127.0.0.1', 8000))10接收的内容: 登录成功,可以开始上传下载文件了!!!11发送人的地址: ('127.0.0.1', 8000)12step1:准备开始下载requirements.txt文件13step2:建立一个udp socket连接14step3:向tftp ip=127.0.0.1 port=69服务器发送读写请求15step4:新建一个文件句柄,为了接收想下载的文件内容16step5:开始接收消息,消息内容为接收的数据和服务器信息17step6: 获取操作码: (3,) 和数据块编号 (0,)18step7: 打印:the server of info is: ('127.0.0.1', 64495)19step8:打印接收的数据: b'\x00\x03\x00\x00flask\r\nredis\r\npymysqlflask\r\nredis\r\npymysql'20step9:开始写文件21step10:判断文件是否读取完成22step13:文件requirements.txt下载成功!!!

    推荐阅读
  • 鼻窦炎十几年了(鼻窦炎好了一半)

    以下内容希望对你有帮助!鼻窦炎十几年了我患有鼻窦炎差不多3,4年了,每天都是头痛,头晕,前额,头顶,后脑勺无一幸免,在今年春节吃中药后,到现在2个月余了,好了一半多这样,已经很开心了,说真心话,这病真难治

  • 京东联想官方授权专卖店靠谱吗(克扣标配绑架五星好评)

    真是活久见,京东商城联想华东授权专卖店蓄意绑架消费者五星好评!通过克扣标准配件的方式来索要好评的方式,实在让人接受不了。原本笔记本新到,心里蛮期待的。生平最恨别人绑架意见。在我的质问下,才恢复了正常交流了。保留差评权是每个消费者都该有的维权意识,真心呼吁广大网友不要因为小恩小惠的贿赂放弃了自己的“评论“的客观性。无良商家的通过套路原本就是属于消费者的权益,而对牟取自己的利益。

  • 网站建设公司网站制作(企业网站制作)

    企业网站制作完成,可以实现线上营销,线下成交,开启全网O2O互动营销模式,快速实现线下与线上、PC端与手机移动端的O2O结合,实时全网互动传播,全网多渠道多平台批量开发客户。

  • 呼和浩特市中学二年级复课(呼和浩特市将对暂未复课学生进行专门辅导)

    呼和浩特市中学二年级复课10月26日,呼和浩特市已完成核酸检测的学生已经返回校园。市教育局表示,近日,呼和浩特市疫情防控形势较为严峻,市教育系统将进一步筑牢校园疫情防控安全屏障,保障学生健康,保证家长们能够安心工作,维护社会秩序的正常稳定。四是提醒家长和孩子,充分利用呼和浩特市教育云平台,平台已开发上传了7361节名师优课教育资源为孩子们居家学习提供保障。

  • 起亚K3外观怎么样 起亚k3长什么样

    起亚K3外观怎么样起亚K3在外观上也采用了新K5的设计语言,在K5备受好评的虎啸前脸基础上进行了漂亮的优化调整。至于车身尺寸,目前还没有正式公布,很有可能会在目前车型尺寸的基础上进行微调。新款车型尾部采用了溜背设计,这也是K3的一大亮点。K3是起亚家族中一款全新的紧凑型家用轿车。起亚K3GT采用家族式设计风格。前脸中国网起亚特有的风格增加了代表运动的红色元素和“GT”标志。看来起亚这次是下定决心要追求运动了。

  • 欢乐颂第一部白富美(使用欢乐颂教你的方法)

    精读就是不动笔不读,笔记、书批为第一要务。

  • 郎朗李云迪之争(同是年少学艺朗朗力争上游)

    之后,在沈阳文工团当了一名二胡演员。5岁,郎朗获得了沈阳少儿比赛的第一名。当时他的理想是成为一名钢琴家。要知道,这个调整意味着全国其他选手都要为此做出调整。当时音乐学院的一位老师,总是对郎朗极尽刁难。为了抵制父亲,郎朗3个月没有练琴。在此之前,他们家为了郎朗学习,已经花光了所有的钱。学校选派的5名孩子都没有取得任何奖项。这项大奖已经连续15年空缺了,李宇迪也是获得这份荣誉的第一位钢琴家。

  • 奔跑吧里面的李晨和郑恺撕名牌(奔跑吧全体疲劳)

    奔跑吧里面的李晨和郑恺撕名牌昨晚迎来了最新一期跑男,主题是功夫特辑。说实话,对于参加了这么多季跑男的李晨来说,应该是一个很简单的游戏。何况对手还是第一次参加节目的聂远,估计baby也是觉得李晨必赢,毫不犹豫的押了李晨。可谁知,两轮游戏下来,李晨还没走到一半,聂远就走到了对面,取得了碾压式胜利。可是,昨晚的baby因为手受伤的原因,几乎全程都未参加游戏。他俩的受伤,导致撕名牌环节单一。

  • 煤矿一优三减是什么(煤矿一优三减成果如何)

    煤矿一优三减成果如何优化系统、减水平、减头面、减人员,简称“一优三减”一优三减成效明显,煤矿安全保障能力显著提高全国煤矿安全基础建设推进大会提出,要坚持“管理、装备、素质、系统”并重,抓关键、补短板、强弱项,大力推进煤矿。

  • 黄色冰糖好还是白色的冰糖好(冰糖有什么功效)

    黄冰糖和白冰糖首先我们要了解它们是如何形成的,白冰糖是单晶体冰糖,黄冰糖是多晶冰糖。黄冰糖未经过严格脱色加工处理,较原始的白冰糖,甘蔗原有成分保留较多,相对严格脱色的白色冰糖来说,甜度更高,营养价值更丰富。冰糖的功效和作用一、药用价值中医认为,冰糖具有润肺止咳、生津止渴、补中益气的功效,所以在中医里冰糖经常用作炖制补品的辅料。此外,冰糖还有健脾和胃的作用。糖尿病、高血糖患者必须忌食。