lldp协议代码阅读_Python UDP 协议网络编程五

点击上方蓝字,关注:无量测试之道

c12c6d453de72cfc62c61acbf0675d0e.png

作者 | 无量测试之道编辑 | 小 晴

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

今日主题:使用Python 实现的上传文件的客户端功能。

温馨提示:今日内容与前期推文Python UDP 协议网络编程《三》具有关联性,如果Python UDP 协议网络编程《三》没有阅读的小伙伴,建议先阅读后,再来学习今天的内容,有助于更好的理解哟(点击蓝色字体的推文名称即可查看上一篇文章全部内容)。

今日分享内容与上篇文章主题:使用Python 实现的下载文件的客户端功能一样,理论内容较少,今天更偏实战性,以下实现代码需仔细分析、理解每一行代码的作用及相互间的关联关系,并自行搭建本地环境将代码运行起来,在解决问题的过程中,通过思考与实践才能更好的理解本文主题。

1import struct 2from socket import * 3 4server_ip = '127.0.0.1' 5filename='requirements.txt' 6 7def upload_file(): 8    # 9    send_data_1 = struct.pack('!H%dsb5sb'%len(filename),2,filename.encode('utf-8'),0,b'octet',0)10    udp_socket = socket(AF_INET,SOCK_DGRAM)11    udp_socket.sendto(send_data_1,(server_ip,69)) #第一次发给服务器69端口12    filehandle = open(filename,'rb')13    recv_data = udp_socket.recvfrom(1024) #第一次接收数据14    rand_port = recv_data[1][1]15    # ack_num = struct.unpack("!HH",recv_data[0][:4])16    num = 017    while True:18        read_data = filehandle.read(512)19        send_data = struct.pack('!HH',3,num) + read_data20        udp_socket.sendto(send_data,(server_ip,rand_port)) #第二次发给服务器的随机端口21        recv_data_2,userinfo = udp_socket.recvfrom(1024)22        print(recv_data_2)23        ack_num = struct.unpack('!H',recv_data_2[2:4])24        print(len(read_data),num,ack_num[0],rand_port)25        if len(read_data) 512 or ack_num[0] != num :26            filehandle.close()27            break28        num = num + 12930def user_login():31    udp_socket = socket(AF_INET, SOCK_DGRAM)  # 建议upd连接32    local_address = ('127.0.0.1', 8000)  # 定义了本机的ip and port33    udp_socket.bind(local_address)  # 绑定本机的ip and port34    resvice_address=('127.0.0.1', 69) #定义了接收消息机器的ip and port35    data="admin 123456"36    udp_socket.sendto(str(data).encode("utf-8"),resvice_address)#向接收消息机器发送消息37    udp_socket.close()38    udp_secv_msg()3940def udp_secv_msg():41    udp_sockets = socket(AF_INET, SOCK_DGRAM)  # 建立udp socker连接42    server_address = ('127.0.0.1', 70)  # 定义了服务端的ip and port43    udp_sockets.bind(server_address)  # 服务端绑定ip and port44    recv_data = udp_sockets.recvfrom(1024)  # 收数据等待45    print('接收的内容:', recv_data[0].decode('utf-8'))  # 显示收到的信息46    print('发送人的地址:', recv_data[1])  # 显示收到的信息47    udp_sockets.close()4849if __name__ == '__main__':50    # 第一步登录tftp服务器51    user_login()52    # 第二步是上传文件53    upload_file()

如在代码运行过程中遇到任何问题,欢迎在公众号后台留言,或在【无量测试之道~技术交流群】提出你的疑问,我们一起参与讨论解决。

如果今天的分享对你有帮助的话,请毫不犹豫:关注、分享、点赞、在看、收藏呀~
你的鼓励将会是我创作的最大动力。

6928678e7c62f68619bb546d0e63683a.gif

◆Python UDP 协议网络编程《三》 ◆python+Appium之APP自动化测试 ◆Python API自动化测试实操(高清版配图)

点个赞,点个在看再走吧~~~

cbbada34d275591a52d6413047131638.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值