CN108600378A - 一种文件下载方法、装置、终端和存储介质 - Google Patents

一种文件下载方法、装置、终端和存储介质 Download PDF

Info

Publication number
CN108600378A
CN108600378A CN201810396790.8A CN201810396790A CN108600378A CN 108600378 A CN108600378 A CN 108600378A CN 201810396790 A CN201810396790 A CN 201810396790A CN 108600378 A CN108600378 A CN 108600378A
Authority
CN
China
Prior art keywords
target
destination
file
downloaded
network address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810396790.8A
Other languages
English (en)
Other versions
CN108600378B (zh
Inventor
杨亮
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changsha Ningsi Information Technology Co.,Ltd.
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810396790.8A priority Critical patent/CN108600378B/zh
Publication of CN108600378A publication Critical patent/CN108600378A/zh
Application granted granted Critical
Publication of CN108600378B publication Critical patent/CN108600378B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/148Migration or transfer of sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种文件下载方法、装置、终端和存储介质。该方法包括:获取待下载文件对应的目标网址;根据预设请求方法和目标网址生成目标请求报文,并向目标服务器发送目标请求报文;根据接收的目标响应报文确定目标响应码,其中目标响应报文由目标服务器根据目标请求报文发送;若目标响应码为转移响应码,则根据目标响应报文确定转移网址,并根据转移网址更新目标请求报文,向目标服务器发送更新后的目标请求报文;根据接收的更新后的目标响应报文下载待下载文件。本发明实施例的技术方案,可以解决现有技术中无法自动下载重定向后的文件的问题,实现了文件的自动下载,提高了下载效率,以及提升了用户体验。

Description

一种文件下载方法、装置、终端和存储介质
技术领域
本发明实施例涉及网络技术,尤其涉及一种文件下载方法、装置、终端和存储介质。
背景技术
随着网络技术的发展,用户经常会在客户端中下载所需的文件。目前,基于HTTP(HyperText Transfer Protocol,超文本传输协议)网络协议下载服务器中的文件是一种最为常见的下载方法。
然而,在下载一个指定网址中的文件数据时,若因某种原因该网址的文件数据被转移到其他的路径,则会导致无法下载该网址中文件数据的问题。通常,在现有技术中程序员发现文件数据被转移,即发生网址重定向后,通过手动编写相关代码来实现网址的跳转下载。可见,现有技术中在文件重定向后,无法实现文件数据的自动下载,从而降低了下载效率,并且影响了用户体验。
发明内容
本发明实施例提供了一种文件下载方法、装置、终端和存储介质,以解决现有技术中无法自动下载重定向后的文件数据的问题,实现了文件的自动下载,从而提高了下载效率,以及提升了用户体验。
第一方面,本发明实施例提供了一种文件下载方法,包括:
获取待下载文件对应的目标网址;
根据预设请求方法和所述目标网址生成目标请求报文,并向目标服务器发送所述目标请求报文;
根据接收的目标响应报文确定目标响应码,其中所述目标响应报文由所述目标服务器根据所述目标请求报文发送;
若所述目标响应码为转移响应码,则根据所述目标响应报文确定转移网址,并根据所述转移网址更新所述目标请求报文,向所述目标服务器发送更新后的目标请求报文;
根据接收的更新后的目标响应报文下载所述待下载文件。
第二方面,本发明实施例还提供了一种文件下载装置,包括:
目标网址获取模块,用于获取待下载文件对应的目标网址;
目标请求报文生成模块,用于根据预设请求方法和所述目标网址生成目标请求报文,并向目标服务器发送所述目标请求报文;
目标响应码确定模块,用于根据接收的目标响应报文确定目标响应码,其中所述目标响应报文由所述目标服务器根据所述目标请求报文发送;
目标请求报文更新模块,用于若所述目标响应码为转移响应码,则根据所述目标响应报文确定转移网址,根据所述转移网址更新所述目标请求报文,并向所述目标服务器发送更新后的目标请求报文;
第一文件下载模块,用于根据接收的更新后的目标响应报文下载所述待下载文件。
第三方面,本发明实施例还提供了一种终端,所述终端包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所述的文件下载方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明任意实施例所述的文件下载方法。
本发明实施例通过根据预设请求方法和待下载文件的目标网址生成目标请求报文,并向目标服务器发送目标请求报文,并根据接收的目标响应报文确定目标响应码;若目标响应码为转移响应码,则根据目标响应报文确定转移网址,根据转移网址更新目标请求报文,并向目标服务器重新发送更新后的目标请求报文,以接收更新后的目标响应报文,从而根据更新后的目标响应报文下载待下载文件,使得在待下载文件的网址发生重定向时,可以根据重定向之后的转移网址自动下载待下载文件,从而解决了现有技术中无法自动下载重定向后的文件的问题,提高了下载效率以及提升了用户体验。
附图说明
图1是本发明实施例一提供的一种文件下载方法的流程图;
图2是本发明实施例二提供的一种文件下载装置的结构示意图;
图3是本发明实施例三提供的一种终端的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种文件下载方法的流程图,本实施例可适用于在客户端中下载服务器中的文件的情况。该方法可以由文件下载装置来执行,该装置可以由软件和/或硬件的方式来实现,集成于客户端中。该方法具体包括以下步骤:
S110、获取待下载文件对应的目标网址。
其中,待下载文件是指利用HTTP协议需要从服务器中下载的HTTP文件。每个待下载文件均对应一个目标网址。本实施例中的目标网址是指基于HTTP协议的URL(UniformResoure Locator,统一资源***)地址。待下载文件对应的目标网址可以通过用户输入网址的方式获取,也可以通过用户直接点击待下载文件对应的网址链接来获取。示例性的,待下载文件的名称为version.ini,其中,www表示该文件version.ini的协议为HTTP协议,www.douyu.com表示主机地址,即域名地址,pcclient/version.ini表示待下载文件version.ini的资源路径,根据该目标网址可以看出待下载文件version.ini存储于www.douyu.com这台主机的pcclient目录下。
S120、根据预设请求方法和目标网址生成目标请求报文,并向目标服务器发送目标请求报文。
其中,请求方法包括但不限于GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE和CONNECT。预设请求方法可以根据实际情况和需求预先设置。示例性的,通常在下载HTTP文件时采用GET请求方法。目标请求报文可以是指向目标服务器请求下载文件的HTTP报文。本实施例中的目标服务器是指目标网址对应的HTTP服务器,用于接收和应答文件下载装置发送的目标请求报文。
可选的,S120包括:
根据目标网址中的目标域名地址,确定目标IP地址和目标端口;基于目标IP地址和目标端口,利用套接字和读写服务对象连接目标服务器;于连接目标服务器成功时,根据预设请求方法和目标网址生成目标请求报文,并向目标服务器发送目标请求报文。
其中,HTTP协议是基于TCP(Transmission Control Protocol,传输控制协议)协议的上层应用协议。通常传统的TCP协议需要根据IP地址和端口来连接服务器,因此在发起TCP连接时,必须提供目标IP地址和目标端口,示例性的,IP地址为127.0.0.1。基于HTTP协议的目标网址提供的只有域名地址,从而需要对目标网址中的目标域名地址进行解析,确定与目标域名地址对应的目标IP地址和目标端口。可选的,通过调用gethostbyname获取hostent结构,并根据hostent结构中的h_addr_list字段,解析出目标IP地址。具体的,通过gethostbyname网络API(Application Programming Interface,应用程序编程接口)将目标域名地址作为参数传递至gethostbyname函数中,从而获取一个hostent结构数据,并根据该hostent结构中的h_addr_list字段,调用inet_ntoa获取h_addr_list[0],从而将h_addr_list[0]对应的IP地址确定为目标域名地址对应的目标IP地址。本实施例中HTTP服务器默认的端口是80,从而可以直接确定目标端口为80。示例性的,待下载文件version.ini的目标网址为http://www.douyu.com/pcclient/version.ini,通过将域名地址www.douyu.com作为参数传递到gethostbyname函数中,从而确定与www.douyu.com对应的目标IP地址。根据确定的目标IP地址和目标端口,利用TCP SOCKET套接字和I/O读写服务对象发送TCP连接,从而连接目标服务器。
可选的,基于目标IP地址和目标端口,利用套接字和读写服务对象连接目标服务器,包括:
创建异步的读写服务对象;创建异步的套接字,并将读写服务对象传入至套接字的构造函数中;调用套接字的连接函数,并将目标IP地址和目标端口传入连接函数中;根据第一回调函数中的参数信息确定目标服务器是否连接成功,其中,第一回调函数用于接收连接函数的连接结果。
其中,本实施例在连接目标服务器时,使用的是boost开源库的ASIO(异步IO)库。可选的,通过new操作符,创建一个类型为boost::asio::io_service的异步的读写服务对象,可以将该读写服务对象标记为m_ioService。通过new操作符,创建一个类型为boost::asio::ip::tcp::socket的异步的套接字,并将创建的m_ioService读写服务对象传入至该类型的构造函数中,该读写服务对象可以作为该构造函数的第一个参数,并将传入读写服务对象的套接字可以标记为m_socket。通过调用创建的套接字m_socket中的连接函数,如async_connect函数,将目标IP地址和目标端口传入至该连接函数中,以连接目标服务器。本实施例中套接字的连接函数是用于实现对目标服务器的异步连接,还需要提供一个OnConnectResult的回调函数,以判断该连接函数的执行是否成功,利用第一回调函数来接收该连接函数的连接结果。可选的,当进入第一回调函数时,通过判断第一回调函数中的error参数信息是否等于0来确定目标服务器是否连接成功。若error参数信息等于0,则表示连接目标服务器成功,若error参数信息不等于0,则表示连接目标服务失败,需要重新进行目标服务器的连接。
可选的,在连接目标服务器成功后,还需要发起一个网络读取数据请求,以准备接收来接目标服务器的响应数据。也就是在调用套接字中的接收函数,比如async_read_some函数时,将一个异步的独权请求投递到读写服务对象中。并且在调用接收函数时,也需要提供一个OnRecvMessage的回调函数,以接收目标服务器发送的网络数据。本实施例中套接字中的接收函数async_read_some是用于实现对目标服务器发送的网络数据的异步接收和下载。
可选的,预设请求方法为GET方法;相应的,根据预设请求方法和目标网址生成目标请求报文,并向目标服务器发送目标请求报文,包括:
根据目标网址,构造GET头部和主机头部;根据GET头部和主机头部,确定目标请求报文头部;根据套接字中的发送函数,向目标服务器发送目标请求报文头部。
其中,在连接目标服务器成功后,便可以向目标服务器发送目标请求报文。当预设请求方式为GET方法时,通常是将文本类型的HTTP请求报文头部数据发送给目标服务器。本实施例中的请求报文头部中需要使用“\r\n”换行,并且在文本数据的末尾有一个不带任何数据的“\r\n”换行符。在构造GET头部时,必须以GET字符串开头,之后加上目标网址中的主机名称和HTTP协议的版本号。在构造主机(Host)头部时,以Host字符串开头,之后加上目标网址中的主机地址。示例性的,若目标网址为http://www.douyu.com/pcclient/version.ini,则构造的GET头部为GET pcclient/version.ini HTTP/1.1\r\n,构造的主机头部为Host:www.douyu.com\r\n。在构造好的GET头部之后,紧接着加入构造好的主机头部,从而确定目标请求报文头部的文本字符串。通过调用套接字中的发送函数,比如async_write_some函数,将目标请求报文头部的文本字符串发送至目标服务器。本实施例中套接字中的发送函数async_write_some是用于实现对请求数据的异步发送。
可选的,在S120之后,还包括:
调用套接字中的接收函数,并利用第二回调函数接收目标服务器发送的目标响应报文。
其中,将目标请求报文发送至目标服务器之后,若目标服务器响应成功,则目标服务器向文件下载装置发送与目标请求报文对应的目标响应报文。本实施例可以通过调用套接字中的接收函数async_read_some,当目标服务器响应成功时,便进入到第二回调函数OnRecvMessage来接收目标服务器发送的目标响应报文。
S130、根据接收的目标响应报文确定目标响应码,其中目标响应报文由目标服务器根据目标请求报文发送。
其中,本实施例中的目标响应报文是指目标服务器根据目标请求报文生成和发送的HTTP响应报文。目标响应码可以是用于描述向目标服务器发送请求时返回的请求结果,根据目标响应码可以判断目标服务器是成功的处理了请求,还是出现了错误。当接收到目标响应报文时,对目标响应报文进行解析,确定目标请求报文中的目标响应码。在目标响应报文中,以HTTP版本号开头,HTTP版本号后紧跟着的就是目标响应码。示例性的,若目标响应报文中为“HTTP/1.1200”,则确定目标响应码为200,若目标响应报文中为“HTTP/1.1302”,则确定目标响应码为302。当目标响应码为200时,表示目标服务器成功处理了请求。若目标响应码为302,则表示待下载文件的目标网址发生了重定向错误,即目标网址发生了转移。
S140、若目标响应码为转移响应码,则根据目标响应报文确定转移网址,并根据转移网址更新目标请求报文,并向目标服务器发送更新后的目标请求报文。
其中,转移响应码是指网址发生转移时对应的响应码,本实施例中的转移响应码可以为302。当目标响应码为转移响应码时,表明发生了重定向错误,即根据目标网址是无法成功下载待下载文件的,此时需要根据目标响应报文确定转移网址。可选的,对目标响应报文头部中的Location位置字段进行解析,获取重定向之后的转移网址。示例性的,待下载文件version.ini的目标地址为http://www.douyu.com/pcclient/version.ini,即表示待下载文件version.ini存储于www.douyu.com这台主机的pcclient目录下,若因某种原因,将待下载文件version.ini移动到pcclient2目录下,则此时获取的目标响应报文头部中的Location位置字段为“Location:http://www.douyu.com/pcclient2/version.ini”,根据Location字段可以确定转移网址为http://www.douyu.com/pcclient2/version.ini,从而可以根据转移网址重新下载待下载文件version.ini。本实施例中将转移网址更新目标请求报文是指将目标网址更新为转移网址,并重新进入S120,根据预设请求方法和更新后的目标网址生成更新后的目标请求报文,并向目标服务器再次发送更新后的目标请求报文,以接收目标服务器根据更新后的目标请求报文发送的更新后的目标响应报文。
S150、根据接收的更新后的目标响应报文下载待下载文件。
其中,根据转移网址获取的更新后的目标响应报文中的目标响应码是成功响应码200,即成功的获取了待下载文件的文件资源。在本实施例中,也可以先判断更新后的目标响应报文中的目标响应码是否为成功响应码,若是,则再根据更新后的目标响应报文下载待下载文件,以保证下载文件的准确性。
可选的,S150包括:
于磁盘的预设位置处,创建一个与转移网址中待下载文件名称相同的目标文件;根据更新后的目标响应报文的头部中的长度字段信息确定待下载文件的目标大小信息;调用套接字的接收函数和读写服务对象中的poll方法,并将目标大小信息传入接收函数中下载待下载文件的数据信息;将下载后的数据信息写入至目标文件中。
其中,磁盘的预设位置是指待下载文件的下载位置,预设位置可以是用户根据实际需求预先选取的磁盘中的存储位置。对更新后的目标网址进行解析得到待下载文件的文件名称,如version.ini。通过调用fopen函数,在磁盘的预设位置处创建一个与该文件名称相同的目标文件,如version.ini文件。由于更新后的目标响应报文中的目标响应码为成功响应码,则获取的更新后的目标响应报文的头部中一定存在长度字段信息,如Content-Length字段,此时根据Content-Length字段来确定待下载文件的目标大小信息。示例性的,若获取的Content-Length字段为“Content-Length:1000”,则表明待下载文件的目标大小为1000字节。本实施例中的目标大小信息可以在创建目标文件之前确定,也可以在创建目标文件之后确定,本实施例对目标大小信息的确定步骤和目标文件的创建步骤的先后顺序不做具体限定。
本实施例中需要同时调用套接字的接收函数和读写服务对象中的poll方法,使得第二回调函数OnRecvMessage接收目标服务器发送的文件数据,若仅调用套接字的接收函数,而未调用读写服务对象中的poll方法,则第二回调函数OnRecvMessage是无法接收到文件数据的。通过调用套接字的接收函数async_read_some和读写服务对象中的poll方法,并将目标大小信息传入接收函数async_read_some中,从而可以利用第二回调函数OnRecvMessage来接收待下载文件的数据信息,当已下载字节量等于目标大小信息时,表示待下载文件下载完成。在目标服务器上将待下载文件的数据信息下载完成后,通过调用fwrite函数,将待下载文件的数据信息写入到创建的目标文件中,从而存储待下载文件。本实施例在下载HTTP文件时,若发生了重定向错误,则可以自动解析出重定向之后的转移网址,并根据转移网址自动重新下载,从而解决了现有技术中无法自动下载重定向后的文件的问题,大大的加快了下载效率,并提升了用户体验。
需要注意的是,本实施例中调用套接字的连接函数async_connect、接收函数async_read_some和发送函数async_write_some均是异步的,所以需要调用读写服务对象的poll方法对套接字的所有异步事件进行处理。
可选的,若目标响应码为成功响应码,则直接根据目标响应报文下载待下载文件。
其中,本实施例中的成功响应码可以为200。若目标响应报文中的目标响应码为成功响应码,则表示待下载文件没有发生重定向错误,此时可以直接根据目标响应报文来下载待下载文件。直接根据目标响应报文下载文件的过程与根据更新后的目标响应报文下载文件的过程类似,具体为:于磁盘的预设位置处,创建一个与目标网址中待下载文件名称相同的目标文件;根据目标响应报文的头部中的长度字段信息确定待下载文件的目标大小信息;调用套接字的接收函数和读写服务对象中的poll方法,并将目标大小信息传入接收函数中下载待下载文件的数据信息;将下载后的数据信息写入至目标文件中。本实施例可以通过判断目标响应码是转移响应码还是成功响应码,从而根据不同的目标响应码自动下载文件,以提高下载***运行的稳定性和适用性。
本实施例的技术方案,通过根据预设请求方法和待下载文件的目标网址生成目标请求报文,并向目标服务器发送目标请求报文,并根据接收的目标响应报文确定目标响应码;若目标响应码为转移响应码,则根据目标响应报文确定转移网址,根据转移网址更新目标请求报文,并向目标服务器重新发送更新后的目标请求报文,以接收更新后的目标响应报文,从而根据更新后的目标响应报文下载待下载文件,使得在待下载文件的目标网址发生重定向时,可以根据重定向之后的转移网址自动下载待下载文件,从而解决了现有技术中无法自动下载重定向后的文件的问题,提高了下载效率以及提升了用户体验。
实施例二
图2为本发明实施例二提供的一种文件下载装置的结构示意图,本实施例可适用于在客户端中下载服务器中文件的情况,该装置包括:目标网址获取模块210、目标请求报文生成模块220、目标响应码确定模块230、目标请求报文更新模块240和第一文件下载模块250。
其中,目标网址获取模块210,用于获取待下载文件对应的目标网址;目标请求报文生成模块220,用于根据预设请求方法和目标网址生成目标请求报文,并向目标服务器发送目标请求报文;目标响应码确定模块230,用于根据接收的目标响应报文确定目标响应码,其中目标响应报文由目标服务器根据目标请求报文发送;目标请求报文更新模块240,用于若目标响应码为转移响应码,则根据目标响应报文确定转移网址,并根据转移网址更新目标请求报文,并向目标服务器发送更新后的目标请求报文;第一文件下载模块250,用于根据接收的更新后的目标响应报文下载待下载文件。
可选的,目标请求报文生成模块220,包括:
目标IP地址确定单元,用于根据目标网址中的目标域名地址,确定目标IP地址和目标端口;
目标服务器连接单元,用于基于目标IP地址和目标端口,利用套接字和读写服务对象连接目标服务器;
目标服务器连接单元,用于连接目标服务器成功时,根据预设请求方法和目标网址生成目标请求报文,并向目标服务器发送目标请求报文。
可选的,目标服务器连接单元,具体用于:
创建异步的读写服务对象;创建异步的套接字,并将读写服务对象传入至套接字的构造函数中;调用套接字的连接函数,并将目标IP地址和目标端口传入连接函数中;根据第一回调函数中的参数信息确定目标服务器是否连接成功,其中,第一回调函数用于接收连接函数的连接结果。
可选的,预设请求方法为GET方法;相应的,目标请求报文生成单元,具体用于:
根据目标网址,构造GET头部和主机头部;根据GET头部和主机头部,确定目标请求报文头部;根据套接字中的发送函数,向目标服务器发送目标请求报文头部。
可选的,该装置还包括:
目标响应报文接收模块,用于在向目标服务器发送目标请求报文之后,调用套接字中的接收函数,并利用第二回调函数接收目标服务器发送的目标响应报文。
可选的,第一文件下载模块250,具体用于:
于磁盘的预设位置处,创建一个与转移网址中待下载文件名称相同的目标文件;
根据更新后的目标响应报文的头部中的长度字段信息确定待下载文件的目标大小信息;
调用套接字的接收函数和读写服务对象中的poll方法,并将目标大小信息传入接收函数中下载待下载文件的数据信息;
将下载后的数据信息写入至目标文件中。
可选的,该装置还包括:
第二文件下载模块,用于若目标响应码为成功响应码,则直接根据目标响应报文下载待下载文件。
上述文件下载装置可执行本发明任意实施例所提供的文件下载方法,具备执行文件下载方法相应的功能模块和有益效果。
实施例三
图3是本发明实施例三提供的一种终端的结构示意图。参见图3,该终端包括:
一个或多个处理器310;
存储器320,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器310执行,使得一个或多个处理器310实现如上述实施例中任一实施例提出的文件下载方法。
图3中以一个处理器310为例;终端中的处理器310和存储器320可以通过总线或其他方式连接,图3中以通过总线连接为例。
存储器320作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的文件下载方法对应的程序指令/模块(例如,文件下载装置中的目标网址获取模块210、目标请求报文生成模块220、目标响应码确定模块230、目标请求报文更新模块240和第一文件下载模块250)。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述的文件下载方法。
存储器320主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器320可进一步包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本实施例提出的终端与上述实施例提出的文件下载方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行文件下载方法相同的有益效果。
实施例四
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的文件下载方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上述实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间的相同或相似的部分互相参见即可。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种文件下载方法,其特征在于,包括:
获取待下载文件对应的目标网址;
根据预设请求方法和所述目标网址生成目标请求报文,并向目标服务器发送所述目标请求报文;
根据接收的目标响应报文确定目标响应码,其中所述目标响应报文由所述目标服务器根据所述目标请求报文发送;
若所述目标响应码为转移响应码,则根据所述目标响应报文确定转移网址,并根据所述转移网址更新所述目标请求报文,向所述目标服务器发送更新后的目标请求报文;
根据接收的更新后的目标响应报文下载所述待下载文件。
2.根据权利要求1所述的方法,其特征在于,根据预设请求方法和所述目标网址生成目标请求报文,并向目标服务器发送所述目标请求报文,包括:
根据所述目标网址中的目标域名地址,确定目标IP地址和目标端口;
基于所述目标IP地址和所述目标端口,利用套接字和读写服务对象连接目标服务器;
于连接所述目标服务器成功时,根据预设请求方法和所述目标网址生成目标请求报文,并向所述目标服务器发送所述目标请求报文。
3.根据权利要求2所述的方法,其特征在于,基于所述目标IP地址和所述目标端口,利用套接字和读写服务对象连接目标服务器,包括:
创建异步的读写服务对象;
创建异步的套接字,并将所述读写服务对象传入至所述套接字的构造函数中;
调用所述套接字的连接函数,并将所述目标IP地址和所述目标端口传入所述连接函数中;
根据第一回调函数中的参数信息确定所述目标服务器是否连接成功,其中,所述第一回调函数用于接收所述连接函数的连接结果。
4.根据权利要求2所述的方法,其特征在于,所述预设请求方法为GET方法;
相应的,根据预设请求方法和所述目标网址生成目标请求报文,并向所述目标服务器发送所述目标请求报文,包括:
根据所述目标网址,构造GET头部和主机头部;
根据所述GET头部和所述主机头部,确定目标请求报文头部;
根据所述套接字中的发送函数,向所述目标服务器发送所述目标请求报文头部。
5.根据权利要求2所述的方法,其特征在于,在向所述目标服务器发送所述目标请求报文之后,还包括:
调用所述套接字中的接收函数,并利用第二回调函数接收所述目标服务器发送的目标响应报文。
6.根据权利要求2所述的方法,其特征在于,根据接收的更新后的目标响应报文下载所述待下载文件,包括:
于磁盘的预设位置处,创建一个与所述转移网址中待下载文件名称相同的目标文件;
根据更新后的目标响应报文的头部中的长度字段信息确定所述待下载文件的目标大小信息;
调用所述套接字的接收函数和所述读写服务对象中的poll方法,并将所述目标大小信息传入所述接收函数中下载所述待下载文件的数据信息;
将下载后的数据信息写入至所述目标文件中。
7.根据权利要求1-6任一所述的方法,其特征在于,所述方法还包括:
若所述目标响应码为成功响应码,则直接根据所述目标响应报文下载所述待下载文件。
8.一种文件下载装置,其特征在于,包括:
目标网址获取模块,用于获取待下载文件对应的目标网址;
目标请求报文生成模块,用于根据预设请求方法和所述目标网址生成目标请求报文,并向目标服务器发送所述目标请求报文;
目标响应码确定模块,用于根据接收的目标响应报文确定目标响应码,其中所述目标响应报文由所述目标服务器根据所述目标请求报文发送;
目标请求报文更新模块,用于若所述目标响应码为转移响应码,则根据所述目标响应报文确定转移网址,并根据所述转移网址更新所述目标请求报文,向所述目标服务器发送更新后的目标请求报文;
第一文件下载模块,用于根据接收的更新后的目标响应报文下载所述待下载文件。
9.一种终端,其特征在于,所述终端包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的文件下载方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的文件下载方法。
CN201810396790.8A 2018-04-28 2018-04-28 一种文件下载方法、装置、终端和存储介质 Active CN108600378B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810396790.8A CN108600378B (zh) 2018-04-28 2018-04-28 一种文件下载方法、装置、终端和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810396790.8A CN108600378B (zh) 2018-04-28 2018-04-28 一种文件下载方法、装置、终端和存储介质

Publications (2)

Publication Number Publication Date
CN108600378A true CN108600378A (zh) 2018-09-28
CN108600378B CN108600378B (zh) 2021-05-28

Family

ID=63611000

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810396790.8A Active CN108600378B (zh) 2018-04-28 2018-04-28 一种文件下载方法、装置、终端和存储介质

Country Status (1)

Country Link
CN (1) CN108600378B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813851A (zh) * 2020-05-25 2020-10-23 车智互联(北京)科技有限公司 一种移动应用向网页同步数据的方法、***及移动终端
CN112788141A (zh) * 2021-01-18 2021-05-11 苏州浪潮智能科技有限公司 一种文件下载方法、装置、设备及计算机可读存储介质
CN112968919A (zh) * 2019-12-12 2021-06-15 上海欣诺通信技术股份有限公司 一种数据处理方法、装置、设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120102221A1 (en) * 2010-10-25 2012-04-26 Google Inc. System and method for redirecting a request for a non-canonical web page
CN104219311A (zh) * 2014-09-05 2014-12-17 四川长虹电器股份有限公司 下载电视应用的方法和***
CN104270440A (zh) * 2014-09-26 2015-01-07 郭丹 一种便携式宽带无线接入设备的Portal处理方法
CN104426718A (zh) * 2013-09-10 2015-03-18 方正宽带网络服务股份有限公司 数据监听服务器、缓存服务器和重定向下载方法
CN104468363A (zh) * 2013-09-18 2015-03-25 华为终端有限公司 页面重定向方法、路由设备、终端设备及***
CN106557584A (zh) * 2016-11-29 2017-04-05 青岛海信移动通信技术股份有限公司 一种网址收藏方法及装置
CN106874471A (zh) * 2017-02-16 2017-06-20 北京百度网讯科技有限公司 信息推送方法和装置
CN107196986A (zh) * 2016-03-15 2017-09-22 ***通信集团江苏有限公司 一种重定向方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120102221A1 (en) * 2010-10-25 2012-04-26 Google Inc. System and method for redirecting a request for a non-canonical web page
CN104426718A (zh) * 2013-09-10 2015-03-18 方正宽带网络服务股份有限公司 数据监听服务器、缓存服务器和重定向下载方法
CN104468363A (zh) * 2013-09-18 2015-03-25 华为终端有限公司 页面重定向方法、路由设备、终端设备及***
CN104219311A (zh) * 2014-09-05 2014-12-17 四川长虹电器股份有限公司 下载电视应用的方法和***
CN104270440A (zh) * 2014-09-26 2015-01-07 郭丹 一种便携式宽带无线接入设备的Portal处理方法
CN107196986A (zh) * 2016-03-15 2017-09-22 ***通信集团江苏有限公司 一种重定向方法及装置
CN106557584A (zh) * 2016-11-29 2017-04-05 青岛海信移动通信技术股份有限公司 一种网址收藏方法及装置
CN106874471A (zh) * 2017-02-16 2017-06-20 北京百度网讯科技有限公司 信息推送方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JENG-WEI LIN等: ""A Web redirection service for variant Chinese domain name resolution"", 《THIRD INTERNATIONAL CONFERENCE ON INFORMATION TECHNOLOGY AND APPLICATIONS (ICITA"05)》 *
王海燕 , 张华贵: ""在asp.net中实现重定向的方法与技巧"", 《电脑知识与技术:学术交流》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112968919A (zh) * 2019-12-12 2021-06-15 上海欣诺通信技术股份有限公司 一种数据处理方法、装置、设备和存储介质
CN112968919B (zh) * 2019-12-12 2023-05-30 上海欣诺通信技术股份有限公司 一种数据处理方法、装置、设备和存储介质
CN111813851A (zh) * 2020-05-25 2020-10-23 车智互联(北京)科技有限公司 一种移动应用向网页同步数据的方法、***及移动终端
CN111813851B (zh) * 2020-05-25 2023-10-20 车智互联(北京)科技有限公司 一种移动应用向网页同步数据的方法、***及移动终端
CN112788141A (zh) * 2021-01-18 2021-05-11 苏州浪潮智能科技有限公司 一种文件下载方法、装置、设备及计算机可读存储介质
CN112788141B (zh) * 2021-01-18 2022-07-05 苏州浪潮智能科技有限公司 一种文件下载方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN108600378B (zh) 2021-05-28

Similar Documents

Publication Publication Date Title
CN102904959B (zh) 网络加速方法和网关
US9762643B2 (en) Providing hosted virtual desktop infrastructure services
CN106209726B (zh) 一种移动应用单点登录方法及装置
US11700262B2 (en) System and method to securely execute datacenter management operations remotely
CN110769009B (zh) 用户身份认证方法及***
CN108600377A (zh) 一种文件下载的暂停方法、装置、终端和存储介质
CN108600378A (zh) 一种文件下载方法、装置、终端和存储介质
CN112565439A (zh) 物联网通信方法与***
KR101349201B1 (ko) 모바일 단말에서 웹브라우저와 로컬 리소스의 연동 장치 및 그 방법
US20040040022A1 (en) Method and apparatus for just-in-time provisioning application-related information at a communication device
EP2445171B1 (en) File transfer protocol client and implementing method thereof
CN102904935B (zh) 基于家庭网关的下载方法、设备和***
CN108366112A (zh) 客户端的数据传输方法及***、介质和计算设备
CN115412329A (zh) 一种用于物联网的信息处理方法及相关装置
CN112422566B (zh) 远程调用处理方法、装置、存储介质及电子装置
US11804986B2 (en) Method for the remote management of a device connected to a residential gateway
CN113824756A (zh) 文件处理方法、装置、存储介质及电子设备
JP2005157822A (ja) 通信制御装置、アプリケーションサーバ、通信制御方法、およびプログラム
US8761818B2 (en) Converged dialog in hybrid mobile applications
CN111953793B (zh) 一种应用分发方法、装置、终端及存储介质
CN112752262B (zh) 家电设备的联网方法、家电设备及终端设备
CN113965357B (zh) 跨域网站登录状态同步方法、电子设备及存储介质
CN103118042B (zh) 在线应用服务***和方法
CN111327574B (zh) 允许网络地址变动的单机登录***及其方法
CN107454580B (zh) 一种实现应用程序流量定向引导的方法和***及移动终端

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240709

Address after: 508 Accelerator Production Workshop, Building B-2, Haichuang Technology Industrial Park, No. 627 Lugu Avenue, High tech Development Zone, Changsha City, Hunan Province, China 410000

Patentee after: Changsha Ningsi Information Technology Co.,Ltd.

Country or region after: China

Address before: 11 / F, building B1, phase 4.1, software industry, No.1, Software Park East Road, Wuhan East Lake Development Zone, Wuhan City, Hubei Province, 430070

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China