python使用socket和tftp制作下载工具-1

格式:

这里写图片描述

使用struct/socket制作下载器

import struct
from socket import *

def main():
downloadFile = input(“请输入你要下载的文件名:”)
#创建套接字socket
updSocket = socket(AF_INET, SOCK_DGRAM)
#创建请求下载信息
ruestionData = struct.pack(“!H%dsb5sb”%len(downloadFile, 1, downloadFile, 0, octet, 0))
#发送下载文件请求
updSocket.sendto(ruestionData,”192,168,1,1”, 89)

#创建本地文件
newFile = open(downloadFile,'bw')
while True:
    #接收服务器发送回来的数据
    responseData = socket.recvfrom(1024)
    recvData, serverInfo = responseData
    #解包
    opNum = struct.unpack("!H", recvData[:2])
    packNum = struct.unpack("!H", recvData[2:4])
    if opNum[0] == 3:
        num = num + 1
        if num == 65535:
            num =0
        if num == packNum[0]:
            newFile.write(recvData[4:])
            num = packNum[0]

        #整理ACK的数据包
        ackData = struck.pack("!HH", 4, packNum[0])
        updSocket.sendto(ackData, serverInfo)
elif opNum[0] == 5:
    print("sorry,没有这个文件....")
    flag = False

if len(recvData) < 516:
    break
if flag == True:
    f.close()
else:
    os.unlink(downloadFileName)  # 如果没有要下载的文件,那么就需要把刚刚创建的文件进行删除

if name == ‘main‘:
main()

猜你喜欢

转载自blog.csdn.net/frank_ldw/article/details/80288878
今日推荐