from socket import *
import os
import struct
fileName = input('请输入要下载的文件:')
dest = ('192.168.1.102',69)
s = socket(AF_INET,SOCK_DGRAM)
requestFileData = struct.pack('!H%dsb5sb'%len(fileName),1,fileName.encode('utf-8'),0,b'octet',0)
s.sendto(requestFileData,dest)
f = open(fileName,'wb+')
num = 0
flag = True
while True:
recvData = s.recvfrom(1024)# recvfrom的返回值,(bytes对象,地址)
opNum = struct.unpack('!H',recvData[0][0:2])#unpack 返回一个元组
packetNum = struct.unpack('!H',recvData[0][2:4])
serverInfo = recvData[1]
if opNum[0] == 3:
num+=1
print(num)
if num == 65536:
num = 0
if num == packetNum[0]:
f.write(recvData[0][4:])
ackData = struct.pack("!HH", 4, packetNum[
TFTP传输协议笔记
最新推荐文章于 2023-07-06 23:58:46 发布
本文记录了在使用TFTP传输协议过程中遇到的问题及解决方法,包括文件编码、写入模式以及DATA包大小限制等关键点,帮助读者理解TFTP协议的细节和应用。
摘要由CSDN通过智能技术生成