当前位置:文档之家› FTP断点续传的原理

FTP断点续传的原理

FTP断点续传的原理
FTP断点续传的原理

本文建立在你对socket知识有一点点的基础之上(有一点点就足够了:))

FTP客户端实现要建立两个通道,一个控制命令通道,让FTP服务器知道客户端要干什么,一个数据传输通道。所谓的两个通道只不过是两个调用了connect函数的连接,只是控制命令通道专门用来传输一些字符串命令信息,而数据通道则是用来传输文件。控制命令通道一定是由客户端向服务器的连接(默认的端口是21,也可以指定端口,这要看服务器的设置)。连接的过程完成了FTP的登录。数据通道则不一定啦,具体哪个连哪个,请看下面对PASV命令的解释。

其实FTP断点续传的原理很简单,可分为断点下载和断点上传。

客户端的实现步骤如下:

一、下载:

1、向服务器发送“REST + 本地文件长度”命令,告诉服务器,客户端要断点下载了。这时服务器还不知道客户端要下载哪个文件;

2、向服务器发送“RETR + 文件名”命令,通知服务器要下载的文件名,这时服务器开始定位文件指针读文件并发送数据。

3、客户端定位本地文件指针(文件末尾);

4、两端的准备工作都做完了以后,客户端创建socket,以被动或非被动方式建立数据通道,循环调用recv接收数据并追加入本地文件;

二、上传:

1、获取服务器上和本地要上传文件的同名文件大小;

2、向服务器发送“APPE +文件名”,通知服务器,接下来从数据通道发送给你的数据要附加到这个文件末尾。

3、定位本地文件指针(和FTP上文件大小相同的位置)

4、从文件指针处读数据并发送。

好了,FTP断点续传的原理就这么简单。代码里将断点上传和断点下载放到同一个函数(MoveFile)里,通过get参数说明是上传还是下载。当然,整个 FTP类的实现有800多行,包括登录、退出、获取FTP文件大小、删除FTP服务器上文件、响应服务器,解析响应信息等函数。相应的注释代码里都有,这里就不一一熬述了。

这里重点说说PASV模式,即被动模式,这是FTP命令里比较不容易理解的一个,这条命令请求服务器在某个端口(非FTP默认端口或控制命令端口)创建一个监听socket,服务器创建的端口号会在客户端的控制命令通道上得到响应。得到这个端口号后,客户端就可以创建新的socket(数据通道)connect过去,并进行文件传输等工作。否则,如果为非被动模式,那么监听的socket由客户端创建,服务器connect过来。

对于这条命令的存在我是这么理解的,存在这么一种情况:客户端的IP是个内网的IP,服务器的IP是个外网的,当进行数据传输时内网的IP对于服务器是不可见的,只有由服务器启动监听socket才能建立数据通道,所以必须以被动模式进行。:)

FTP和HTTP断点续传的道理

第一,最重要的一点,断点续传需要服务器的支持,这个是必要条件。

传统的FTP SERVER是不支持断点续传的,因为它不支持REST指令,传统的FTP指令(我是指服务器端指令)并不包括REST指令。

第二,客户端要知道使用REST等一系列指令来作断点续传。

看看断点续传的详细过程(FTP SERVER):

首先客户端使用REST指令来告诉FTP SERVER它需要从文件的某个点开始传,接着用STOR或者RETR命令开始传文件,大概的命令的流程如下:

TYPE I

200 Type set to I.

PASV

227 Entering Passive Mode (204,48,18,69,98,250)

REST 187392

350 Restarting at 187392. Send STORE or RETRIEVE to initiate transfer.

RETR /pub/audio/pci/maestro-3/win2k/1056.zip

150 Opening BINARY mode data connection for /pub/audio/pci/maestro-

3/win2k/1056.zip (936098 bytes).

首先使用TYPE命令告诉FTP SERVER使用BINARY模式传送文件;

然后使用PASV命令告诉FTP SERVER使用被动打开模式来传送文件;

接着使用REST 187392指令告诉FTP SERVER要从文件的187392字节开始传送;最后使用RETR指令来传送文件。

从上面可以看出,这个FTP SERVER支持REST指令,有的FTP SERVER(特别的老的)是不支持这个指令的,这时即使FTP CLIENT支持断点续传也一点用都没有!

支持断点的FTP SERVER:Serv-U FTP,还有一系列的新出现的FTP SERVER;不支持断点的:IIS4以前版本所带的都不行,IIS5 有,不家可以测试一下,登录进FTP SERVER,然后输入REST 1000命令,看服务器是否认识,认识就是支持断点。

上面说的是FTP SERVER的断点,HTTP的断点续传是这样的:

在以前版本的HTTP SERVER也是不支持断点的,HTTP/1.1开始就支持了,具体如下:

在HTTP请求的头部信息里面,通常是这样的:

GET http://xxx.xxx.xxx.xxx/index.html HTTP/1.1

Host:https://www.doczj.com/doc/6216312967.html,

Accept:*/*

上面是HTTP请求头的主要内容,是浏览器等客户端发给HTTP SERVER的信息。在这个请求头里面,第一行叫做Request Line,GET叫做请求方法(通常得到一个HTML页面都是用GET,CGI等请求是用POST),

https://www.doczj.com/doc/6216312967.html,/index.html是URL,HTTP/1.1为版本号。

Host:https://www.doczj.com/doc/6216312967.html,是HTTP服务器名字,这也是HTTP/1.1的新东东,以前做虚拟主机可是要一个主机名对应多个IP,现在好了......呵呵,这个离题太远,不说了)

要做断点续传,浏览器等客户端需要在请求头里面发送

Range: bytes=1140736-

这样的请求,就是告诉HTTP SERVER,这个文件要从1140736字节开始传送。

最后一点,大家看了上面的描述可能会有一个问题,那么多点传送怎么做呢?那就

是多起几个线程,连接到服务器,用断点指令来传送文件,在传送的过程中,会检查前面的(比如说第一个蚂蚁)得到的文件的部分是否超过了后面的(比如说第二个蚂蚁)的起点,相等就停前面的蚂蚁,最后再合并几个部分,就得到一个完整的文件了

介绍可以断点续传软件FTP EXPLORER

经过比较,觉得FTP Explorer还是不如CuteFTP来得方便,但它最大的优点是免费不用注册,所以也值得一试。

FTP EXPLORER的主要特点是:(使用图解看这里)

1.支持断点续传:当由于线路中断而导致下载的文件中断时,

FTP EXPLORER可以通过TRANSEER MANAGER

(传输管理器)帮助你在下次登录时从上次中断的地方继续下载文件,这将节省你大量的时间和通讯费

用。传输管理器允许你迅速了解下载或上载文件的详细信息,如FTP位

置、下载状态、下载的目的地

等。当文件下载完毕,文件左边的标记变蓝;当文件传输时因故中断,文件左边的标记为黄色;当文件

传输地因故中断,文件左边的标记变红;这时,只要在中断的文件名上单击鼠标右键,就可以看到一个

对话框,CANCEL表示取消文件传输,RESUBMIT表示进行断点续传。

2.类似

Windows 95中的资源管理器,界面友好。不同的是它显示的是远方FTP站点服务器的内容。

(见下图)

3.自动联接:当联机请求被拒绝时(有的热门

FTP站点限制访问人数),FTP EXPLO RER能够自动重新与暂

时拥挤的FTP站点建立联接,而且可以自由设定重新联接的次数(最多为99次)和时间间隔(如隔90秒

后进行重拨)。一旦联机成功,FTP EXPLORER会自动提示用户。

4.FTP EXPLORER

全面支持拖放功能(Drag an Drop),可以将文件拖到你指定的位置甚至桌面上并可以在桌

面上建立捷径。

(注这些功能另一个也支持断点续传功能的著名软件CUTEETP也有,

但CUTEETP的注册版本才具有断点续传功能)。

FTP EXPLORER网址:ftp://https://www.doczj.com/doc/6216312967.html,/pub/lang/或https://www.doczj.com/doc/6216312967.html,/。

ftp下载的好处我在这里就不多说了,许多工程会把ftp下载作为一个重要的功能来实现。微软提供的WinInet类可以利用下面这些函数:

InternetOpen;

InternetConnect;

GetCurrentDirectory;

SetCurrentDirectory;

FtpGetFile;

很容易实现ftp的下载,网上关于这方面的文章也很多。但是要实现ftp的多线程下载,利用这些函数就显得有些牵强了。用socket根据 ftp协议来开发将会变的十分灵活。下面我就逐步的讲解整个开发的过程:开发环境 BCB(组件模式),VC 环境下请自行稍作改动。看了这篇文章后对于BCB开发人员来说,不仅可以对 FlashGet 等软件的开发原理有一定的了解,特别是在开发组件方面也有很大的指导作用,请耐心的将它看完。很简单!!

首先介绍一下部分ftp协议:

图一 FTP服务示意图

用户FTP和服务器FTP之间要传送文件,需要有两个连接:命令通道和数据连接,从名字上就可以看出命令通道是传送命令的,数据通道是用于传送文件。服务器与服务器之间的数据传送在此就不多作解释。

主要用到的命令为:

USER,PASS,TYPE,SIZE,REST,CWD,PWD,RETR,PASV,PORT,QUIT;

USER:参数是标记用户的Telnet串。用户标记是访问服务器必须的,此命令通常是控制连接后第一个发出的命令,有些主机还会要求口令和帐户。服务器可以在任何时间接收新的USER命令以改变访问控制和(或)帐户信息。这可以重新开始登录过程,所以传输参数不变,在进行中的文件传输在过去的访问控制参数下完成。

PASS:参数是标记用户口令的Telnet串。此命令紧跟USER命令,在某些站点它是完成访问控制不可缺少的一步。因此口令是个重要的东西,因此不能显示出来,服务器方没有办法隐藏口令,所以这一任务得由用户FTP进程完成。

TYPE:参数指定表示类型。有些类型需要第二个参数,第一个参数由单个Telnet字符定义,第二个参数是十进制整数指定字节大小,参数间以分隔。下面是格式:

图二TYPE参数示意图

默认表示类型是ASCII非打印字符,如果参数未改变,以后只改变了第一个参数,则使用默认值。

SIZE:参数从FTP服务器上返回指定文件的大小。

REST:参数域代表服务器要重新开始的那一点,此命令并不传送文件,而是略过指定点后的数据,此命令后应该跟其它要求文件传输的FTP命令。

CWD:此命令使用户可以在不同的目录或数据集下工作而不用改变它的登录或帐户信息。传输参数也不变。参数一般是目录名或与系统相关的文件集合。

PWD:改变当前的工作目录。

RETR:开始传送指定的文件。(从REST参数指定的偏移量开始传送)

PASV:此命令要求服务器DTP在指定的数据端口侦听,进入被动接收请求的状态,参数是主机和端口地址。

PORT:参数是要使用的数据连接端口,通常情况下对此不需要命令响应。如果使用此命令时,要发送32位的IP地址和16位的TCP端口号。上面的信息以8位为一组,逗号间隔十进制传输。

QUIT:退出登录。

各个参数的具体用法举例如下:

USER sandy \r\n //用户名为sandy登录

PASS sandy \r\n //密码为sandy

TYPE I \r\n

SIZE sandy.txt \r\n //如果sandy.txt文件存在,则返回该文件的大小

REST 100 \r\n //重新指定文件传送的偏移

CWD infor/ \r\n //获取当前的工作目录

PWD temp/ \r\n //改变当前的工作目录

RETR \r\n //开始传送文件

PASV \r\n //进入被动模式

PORT h1,h2,h3,h4,p1,p2 \r\n //进入主动模式,h1,h2,h3,h4为ip地址的4个部分。p1,p2是16进制的端口号

下面介绍一下各个函数的使用顺序和一些应注意的地方:

使用这些命令的前提条件是客户端和服务器端建立了连接。比如ftp服务器地址:192.168.1.81 ,端口:21。那么利用Winsock的API函数建立socket连接,然后使用USER,PASS登陆FTP服务器.需要下载文件,要确保文件必须在当前工作目录下,可以使用命令CWD和PWD。查看和更改当前的工作目录。使用SIZE命令获取文件的大小。我们想要多线程下载那么就要求服务器支持该功能。一般我们都会在开头先使用REST命令判断该ftp站点是否支持多线程下载。PORT和PASV两个命令是用来建立数据连接的。他们的主要区别是:PORT需要你指定一个ip地址和端口与服务器建立连接。PASV命令服务器会返回h1,h2,h3,h4,p1,p2样式的数据供客户端连接。等数据连接建立后,就可以了使用REST,RETR进行多线程和断点续传文件下载了。

上面讲解了一点ftp下载的基本知识,下面主要介绍的是断点续传的文件保存技巧。

若要讲断点续传的文件保存方式至少可以说出10种,但是各种方法都有利有弊,下面主要介绍一种我在工作中常常使用的一种文件保存方式:比如要下载一个364544字节的文件,文件名为:namelock.avi。因为要断点续传,所以在下载的过程中必须得保存文件的大小,已经下载的文件的大小和各个线程的任务。

有两种方法:

一、可以产生两个文件:内容文件和配置文件。

二、只需一个文件:把配置文件的数据加载到内容文件的末尾。

这两个都不失为好方法。我使用的是前一种,因为我水平有限,(对于临界资源的访问总是不能做到互坼,老出问题。)。这里的后缀名希望大家要把它放在心上,后缀名是个象征性的东西。就拿我们公司来说,拥有自己的MPEG编码、解码技术,比如原来5m的一首mp3歌曲,通过编码可以转换成500K左右的.fun 文件(funinhand的前三个字)。再利用我们自己的解码播放器边下载边解码边播放,音质和mp3不相上下。真正实现了手机上的流媒体技术。受到国内外高科技大公司的信赖。(不好意思,这里有点像做广告了。)讲这些的另外一个企图是这样的:

内容文件所使用的后缀名是我女朋友的英文名(namelock)的前三个字母.nam 。配置文件使用的是我自己的英文名(sandy)的前三个字母.san 。所以说写程序也可以很浪漫,因为这,女朋友又给了我的月生活零用钱增加了几元,哈哈(大家也可以效仿)。言归正传,这两个文件严格意义上来讲是临时文件,当文件下载完毕的时候,namelock.avi.nam内容文件应该改名为:namelock.avi。namelock.avi.san配置文件也应该及时的删除。

FTP多线程下载技术部分:前面我介绍了文件的保存技巧,主要也是为了多线程服务。现在有个namelock.avi文件需要下载。文件的大小为:364544字节。要用8个下载线程。第一步:将namelock.avi文件分成8个子模块。这里要注意的地方是我所说的分成8个字模块,并不是把文件的内容分别存放到8个不同的缓冲区里。而是生成8个不同的文件偏移量。很多时候程序员为了偷懒往往容易一次性讲文件读入内存,这样带来的后果是不堪设想的。一个比较理想的方法是这样的。

bool DealFile(string fileName) //随便写个函数说明

{

FILE *file;

DWORD fileSize ,pos;

int readLen ;

//MAX_BUFFER_LEN 在头文件里定义,这里能够保证数据不丢失,也不至于内存逸出

char *buffer = new char[MAX_BUFFER_LEN];

file = fopen(fileName.c_str(),"r+b");

if(file == NULL) return false;

fseek(file,0,2);

fileSize = ftell(file); //取得文件的大小

fseek(file,0,0);

do{

readLen = fread(buffer,sizeof(char),MAX_BUFFER_LEN,file);

if(readLen > 0)

{

pos += readLen;

//对读取的文件做处理

}

}while(pos < fileSize); //循环读取文件

delete[] buffer;

fclose(file); //释放资源

return true;

}

8个线程下载文件时,都要对内容文件和配置文件进行读写。这样如果没有处理好,很有可能会造成访问文件失败,我定义了一个全局变量 FileLocked,如果FileLocked=true说明文件正在被某个线程访问。所以使用Sleep(10)睡眠等待。当某个线程进入读写文件时必须设置FileLocked = true;访问文件完毕必须将FileLocked = false;这样就能很好的控制各个线程对文件的访问了。(对临界资源的访问有API提供了很多很好的解决方法,请查阅)。

8个下载线程同时下载文件时,完成部分下载是随机的。那么怎么样把随机的文件数据按照偏移量正确的写入文件呢?我是这样实现的,当要下载文件

namelock.avi时,首先查找文件namelock.avi.san配置文件是否存在。如果存在,说明上次已经下载过部分该文件,就可以断点续传了。如果没有找到该文件,那么生成和该文件的大小一样大的文件,文件里所有的数据都为0,(可以使用函数memset(buffer,10000,''''0''''))和一个配置文件。然后利用fseek函数将数据正确的覆盖原先的0;接下来要介绍一写配置文件的格式了。

很简单,配置文件的内容主要包括:文件在本地保存的绝对路径、文件的大小、线程的个数、已经下载的文件大小,各个线程的任务(在原始文件起始位置和结束位置,中间使用''''-''''分开);如:

D:\mm\namelock.avi //文件保存在这里

364544 //文件大小

5 //有5个线程在下载

0 //已经下载了0字节

0-72908 //线程1的下载任务

72908-145816 //线程2的下载任务

145816-218724 //线程3的下载任务

218724-291632 //线程4的下载任务

291632-364544 //线程5的下载任务

以上是开始下载时的各个线程的任务分配。

D:\mm\namelock.avi

364544

5

113868

72908-72908

113868-145816

145816-218724

218724-291632

291632-364544

以上是某一时刻各个线程的任务分配情况。

各个线程任务分配是这样实现的。在开始下载时,文件平均分成若干块进行下载。如第一个线程一开始的任务是从文件的0位置开始下载一直到 72908位置处。线程1每次下载一块数据后就要调整任务,如第一次下载了20800字节的数据,那么线程1的任务将改为:20800-72908。如此下去,直到任务为72908-72908时表示线程1完成了当前的下载任务。此时,线程1就分析各个线程的任务,找出任务最为繁忙的一个线程:如线程 3:14816-218724。那么线程1就自动去调整任务,拿50%的任务来再次下载。周而复始直到各个线程都完成任务。不过这里有一点需要注意:为了避免重复下载部分数据,在调整任务的时候,起始的文件便移量

必须加上接受缓冲器的字节数,因为如前面所举的列子来看。线程1和线程3在平衡负载的时候,线程正在下载数据,如果所剩的数据比接受缓冲器的大小还小,线程1和线程3的部分下载数据将会重复。

在调整任务和分析任务的时候,会发现一个问题。就是读取文件数据太过频繁。于是我用了一个数据结构。在下载文件的过程中始终打开配置文件,这样速度提高了很多。在文件下载完毕后关闭文件。数据结构如下:

typedef struct FromToImpl{

DWORD from; //任务起始位置

DWORD to; //任务结束位置

}m_fromTo;

typedef struct InfroImpl{

String fileLoad; //文件保存位置

DWORD fileSize; //文件大小

int threadCnt; //下载线程数

DWORD alreadyDownloadCnt; //已经下载的文件大小

FromToImpl *fromToImpl; //各个线程的任务描述

}m_inforImpl;

具体实现的细节,请查看源程序。

FTP工作原理及部署方案

FTP 工作原理及部署方案 1、FTP简介 FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。如果用户需要将文件从自己的计算机上发送到另一台计算机上,可使用FTP上传(upload)或(put)操作,而更多种的情况是用户使用FTP下载(download)或获取(get)操作从FTP服务器上下载文件。 2、FTP工作原理 完整的FTP文件传输需要建立两种类型的连接: 一种为文件传输命令,称为控制连接。 一种实现真正的文件传输,称为数据连接。 3、FTP控制链接 客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。 4、FTP数据连接 FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP 数据连接就是FTP传输数据的过程,它有两种传输模式:主动传输模式(PORT)和被动传输模式(PASSIVE,简称PASV)。主动传输模式下,FTP服务器使用20端口与客户端的暂时端口进行连接,并传输数据,客户端只是处于接收状态。被动传输模式下,FTP服务器打开一个暂态端口等待客户端对其进行连接,并传输数据,服务器并不参与数据的主动传输,只是被动接受。 5、FTP传输方式 ASCII传输方式,假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。 但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp 逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。 二进制传输方式,在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

webmin使用教程

webmin使用教程 Linux系统因其高效稳定而受到广大用户的推崇与青睐,然后其管理的复杂性也使很多用户望而却步,动弹不得.为了降低Linux系统的管理难度,更有效方便的使用该系统,我司所有Linux主机或VPS系统均预装了网页管理工具webmin. webmin是Linux下使用最为广泛,功能最为完善的基于游览器(网页)的操作系统管理工具,只需要简单的点击鼠标,即可实现以前必须使用命令才可完成的许多复杂工作,即使您是网络新手,也能让Linux为您所用. webmin功能复杂,模块繁多,本文仅介绍其中与网站相关的部分,即添加网站及MYSQL数据库,其它功能感兴趣的用户可自行查阅相关资料. 1、登录系统 在浏览器地址栏输入http://您服务器的IP地址:10000 (电信机房目前加了防火墙,不允许用IP访问,请将访问地址换为:http://我司赠送的二级域名:10000)默认没有赠送二级域名,如果需要以这种方式访问的,请联系客服申请*https://www.doczj.com/doc/6216312967.html, 的二级域名。 输入管理员用户名与密码(用户名默认为:root,密码默认为服务器初始密码),并点击登录即可(如下图) 2、添加新网站 当您准备利用该Linux服务器发布某个网站时,您首先应该将网站的域名解析到服务器,并在服务器上添加相应的配置才可使用.完成网站发布的程序叫Apache,所以我们添加新网站的过程也就是Apache服务的管理过程. 当然,一个完整的网站通常包括一个上传用的FTP,一个网站以及一个MySQL数据库.此三者需要分别添加,具体详情如下: 2.1 添加FTP帐号 Linux系统中FTP帐号通常也就是系统帐号,利用webmin添加的过程如下: 登录webmin后,点击"系统"-"用户与群组"(如下图)

wget使用

WGet使用指南 wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTP S和FTP协议,可以使用HTTP代理. 所谓的自动下载是指,wge t可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wge t下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。 wget可以跟踪HTM L页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,wget遵循R ob ot Excl usi on标准(/r obot s.txt). wge t可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。 wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wge t会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。 wge t的常见用法 wget的使用格式 Usage: wget [OPTION]... [URL]...

?使用代理下载 ?启动 -V, --versio n 显示wget的版本后退出 -h, --help 打印语法帮助 -b, --background 启动后转入后台执行 -e, --execut e=COMMAND 执行`.wget rc'格式的命令,wget rc格式参见/et c/wget rc或~/.wgetrc ?记录和输入文件 -o, --out put-file=FI LE 把记录写到FILE文件中 -a, --append-o utput=FILE 把记录追加到FILE文件中 -d, --debug 打印调试输出 -q, --quiet安静模式(没有输出) -v, --verbose 冗长模式(这是缺省设置) -nv, --no n-verbo se 关掉冗长模式,但不是安静模式 -i, --input-file=FI LE 下载在FILE文件中出现的URLs -F, --fo rce-ht ml 把输入文件当作HTML格式文件对待 -B, --base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀 --sslcert file=FILE 可选客户端证书 --sslcert key=KEYFILE 可选客户端证书的KEYFILE --egd-file=FILE 指定EGD socket的文件名 ?下载 --bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用) -t, --t ries=NUMBER 设定最大尝试链接次数(0 表示无限制). -O --out put-do cument=FILE 把文档写到FILE文件中

Web服务器文件安全监控系统——软件使用说明书

(仅供内部使用) 文档作者:___张帆_________ 日期:_2016_/_6__/_30__ 说明书校对:___毋东东_________ 日期:_2016_/_6__/_30__产品经理::___毋东东_________ 日期:_2016_/_6__/_30__ 北京博望华科科技有限公司 版权所有不得复制

软件使用说明书模板 1引言 1 .1编写目的 本文档用于指导用户使用Web服务器文件安全监控系统,开展日常服务器安全监控、能够对文件进行安全监控、包括修改、查看、删除等。 2 软件概述 2 .1软件用途 Web服务器文件安全监控系统是基于inotify-tools 的Web服务器文件监控平台,能够实时监控Web目录文件变化,判断文件内容是否包含恶意代码,自动隔离常见Webshell。同时支持自定义监控关键字。 2 .2软件运行 本软件运行在Linux操作系统,需要进行配置才能完成 3 软件使用过程 3 .1软件安装 1、配置前置环境 下载inotify-tools-3.14,libiconv-1.14源码包,通过yum安装libcurl库文件,另外由于最后编译提示缺少mysql库文件,yum还安装不到,所以我多了一步安装mysql 5.6的步骤。 2、安装apache环境 # yum install -y httpd 安装inotify-tools # tar xvzf inotify-tools-3.14.tar.gz # cd inotify-tools-3.14 # ./configure # make # make install 此处借鉴“https://www.doczj.com/doc/6216312967.html,/tuyang/blog/187462”From sosg 如果是32位系统 ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0 如果是64位系统

ftp工作原理

FTP(文件传输协议)工作原理 目前在网络上,如果你想把文件和其他人共享。最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件。 1、FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户机/ 服务器(Client / Server )架构。用户可以通过各种不同的FTP客户端程序,借助FTP协议,来连接FTP服务器,以上传或者下载文件。 2、FTP通讯端口知识 FTP服务器和客户端要进行文件传输,就需要通过端口来进行。FTP协议需要的端口一般包括两种: 控制链路--------TCP端口21 所有你发往FTP服务器的命令和服务器反馈的指令都是通过服务器上的21端口传送的。 数据链路--------TCP端口20 数据链路主要是用来传送数据的,比如客户端上传、下载内容,以及列目录显示的内容等。 3、FTP连接的两种方式 在数据链路的建立上,FTP Server 为了适应不同的网络环境,支持两种连接模式:主动模式(Port)和被动模式(Pasv)。其实这两种连接模式主要是针对数据链路进行的,和控制链路无关。 主动模式 主动模式是这样工作的:客户端把自己的高位端口和服务器端口21建立控制链路。所有的控制命令比如Is或get 都是通过这条链路传送的。 当客户端需要服务器端给它传送数据时,客户端会发消息给服务器端,告诉自己的位置和打开的高位端口(一般大于1024的端口都就叫高位端口),等候服务器的20端口和客户端打开的端口进行连接,从而进行数据的传输。当服务器端收到信息后,就会和客户端打开的端口连接,这样数据链路就建立起来了。 采用主动模式连接服务器的客户端,当它位于NAT或者防火墙的保护之后时会碰到连接失败的问题。这是因为当防火墙接到服务器发送过来的信息的时候,并不知道应该发送给内部网络中的哪一台客户端造成的。 被动模式 被动模式是这样工作的:当客户端发送数据请求后,服务器也会发信息给客户端,告诉客户端:服务器在本地打开了一个高位端口P,你现在来连接我吧。当客户端收到该信息时,就会去连接服务器端的端口P,连接成功后,数据链路就建立了。

java的http断点续传原理(二)

java的http断点续传原理(二) //获得文件长度 public long getFileSize() { int nFileLength = -1; try{ URL url = new URL(siteInfoBean.getSSiteURL()); HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection (); httpConnection.setRequestProperty("User-Agent","NetFox"); int responseCode=httpConnection.getResponseCode(); if(responseCode>=400) { processErrorCode(responseCode); return -2; //-2 represent access is error } String sHeader; for(int i=1;;i++) { //DataInputStream in = new DataInputStream(httpConnection.getInputStream ()); //Utility.log(in.readLine()); sHeader=httpConnection.getHeaderFieldKey(i); if(sHeader!=null) {

if(sHeader.equals("Content-Length")) { nFileLength = Integer.parseInt(httpConnection.getHeaderField(sHeader)); break; } } else break; } } catch(IOException e){e.printStackTrace ();} catch(Exception e){e.printStackTrace ();} Utility.log(nFileLength); return nFileLength; } //保存下载信息(文件指针位置) private void write_nPos() { try{ output = new DataOutputStream(new FileOutputStream(tmpFile)); output.writeInt(nStartPos.length); for(int i=0;i< p> {

FTP协议原理和工作模式讲解

浅析FTP的PORT和PASV模式工作原理 摘要 通过阅读本文,您可以了解到FTP的基本的工作原理。作者以建立FTP连接到断开FTP连接的方式详细介绍了FTP会话全过程。如果您对PORT模式或者PASV模式的FTP工作原理有些疑惑,相信本文能使您了解更多的细节,使您更加从容的面对企业的网络流量以及安全的管理,特别是如果您的企业正准备在企业内部署ISA Server 2000,或许会给您发布内部服务器带来帮助! 目录 ?FTP协议概述 ?PORT模式 ?PASV模式 ?比较分析 ?图示 FTP协议概述 起初, FTP并不是应用于IP网络上的协议,而是ARPANEt网络中计算机间的文件传输协议,ARPANET是美国国防部组建的老网络,于1960-1980年使用。在那时, FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性,即使在今天,它还允许文件远程存取。这使得用户可以在某个系统上工作,而将文件存贮在别的系统。例如,如果某用户运行Web 服务器,需要从远程主机上取得HTML文件和CGI程序在本机上工作,他需要从远程存储站点获取文件(远程站点也需安装Web服务器)。当用户完成工作后,可使用FTP将文件传回到Web 服务器。采用这种方法,用户无需使用Telnet登录到远程主机进行工作,这样就使Web服务器的更新工作变得如此的轻松。 FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的"三次握手"的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。 下面,让我们来看看,一个FTP客户在和服务器连接是怎么样的一个过程(以标准的FTP端口号为例)。 首先,FTP并不像HTTP协议那样,只需要一个端口作为连接(HTTP的默认端口是80,FTP 的默认端口是21),FTP需要2个端口,一个端口是作为控制连接端口,也就是21这个端口,用于发送指令给服务器以及等待服务器响应;另一个端口是数据传输端口,端口号为20(仅PORT 模式),是用来建立数据传输通道的,主要有3个作用 ?从客户向服务器发送一个文件。 ?从服务器向客户发送一个文件。 ?从服务器向客户发送文件或目录列表。 其次,FTP的连接模式有两种,PORT和PASV。PORT模式是一个主动模式,PASV是被动模式,

wget

wget wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理. 所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启 动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器 在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。 wget可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录 结构。这又常被称作"递归下载"。在递归下载的时候,wget遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。 wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载 失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服 务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。 wget的常见用法 wget的使用格式 Usage: wget [OPTION]... [URL]... 用wget做站点镜像: wget -r -p -np -k https://www.doczj.com/doc/6216312967.html,/~usr_name/ # 或者 wget -m https://www.doczj.com/doc/6216312967.html,/~usr_name/ 在不稳定的网络上下载一个部分下载的文件,以及在空闲时段下载 wget -t 0 -w 31 -c https://www.doczj.com/doc/6216312967.html,/BBC.avi -o down.log & # 或者从filelist读入要下载的文件列表 wget -t 0 -w 31 -c -B ftp://https://www.doczj.com/doc/6216312967.html,/linuxsoft -i filelist.txt -o down.log & 上面的代码还可以用来在网络比较空闲的时段进行下载。我的用法是:在mozilla中将不方便当时下 载的URL链接拷贝到内存中然后粘贴到文件filelist.txt中,在晚上要出去系统前执行上面代码的第二条。 使用代理下载 wget -Y on -p -k https://https://www.doczj.com/doc/6216312967.html,/projects/wvware/ 代理可以在环境变量或wgetrc文件中设定 # 在环境变量中设定代理 export PROXY=http://211.90.168.94:8080/ # 在~/.wgetrc中设定代理 http_proxy = https://www.doczj.com/doc/6216312967.html,:18023/ ftp_proxy = https://www.doczj.com/doc/6216312967.html,:18023/ wget各种选项分类列表 启动 -V, --version 显示wget的版本后退出 -h, --help 打印语法帮助 -b, --background 启动后转入后台执行,记录文件写在当前目录下"wget-log"文件中

HTTP下载原理

HTTP下载原理 对于HTTP协议,向服务器请求某个文件时,只要发送类似如下的请求即可: GET /Path/FileName HTTP/1.0 Host: https://www.doczj.com/doc/6216312967.html,:80 Accept: */* User-Agent: GeneralDownloadApplication Connection: close 每行用一个回车换行分隔,末尾再追加一个回车换行作为整个请求的结束。 “”“” 第一行中的GET是HTTP协议支持的方法之一,方法名是大小写敏感的,HTTP协议还支持OPTIONS、HAED、POST、PUT、DELETE、TRACE、CONNECT等方法,而GET和HEAD这两个方法通常被认为是安全的,也就是说任何实现了HTTP协议的服务器程序都会实现这两个方法。对于文件下载功能,“” GET足矣。GET后面是一个空格,其后紧跟的是要下载的文件从WEB服务器根开始的绝对路径。该路径后又有一个空格,然后是协议名称及协议版本。除第一行以外,其余行都是HTTP头的字段部分。Host字段表示主机名和端口号,如果端口号是默认的80则可以不写。Accept字段中的*/*表示接收任何类型的数据。User-Agent表示用户代理,这个字段可有可无,但强烈建议加上,因为它是服务器统计、追踪以及识别客户端的依据。Connection字段中的close表示使用非持久连接。关于HTTP协议更多的细节可以参考RFC2616(HTTP 1.1)。因为我只是想通过HTTP协议实现文件下载,所以也只看了一部分,并没有看全。如果服务器成功收到该请求,并且没有出现任何错误,则会返回类似下面的数据: HTTP/1.0 200 OK Content-Length: 13057672 Content-Type: application/octet-stream Last-Modified: Wed, 10 Oct 2005 00:56:34 GMT Accept-Ranges: bytes ETag: "2f38a6cac7cec51:160c" Server: Microsoft-IIS/6.0 X-Powered-By: https://www.doczj.com/doc/6216312967.html, Date: Wed, 16 Nov 2005 01:57:54 GMT Connection: close 不用逐一解释,很多东西一看几乎就明白了,只说我们大家都关心内容吧。 第一行是协议名称及版本号,空格后面会有一个三位数的数字,是HTTP协议的响应状态码,200表示成功,OK是对状态码的简短文字描述。状态码共有5类:1xx属于通知类;2xx属于成功类;3xx属于重定向类;4xx属于客户端错误类;5xx属于服务端错误类。对于状态码,相信大家对404应该很熟悉,如果向一 未找到文件这 “ 个服务器请求一个不存在的文件,就会得到该错误,通常浏览器也会显示类似HTTP 404 - ” 样的错误。Content-Length字段是一个比较重要的字段,它标明了服务器返回数据的长度,这个长度是不包含HTTP头长度的。换句话说,我们的请求中并没有Range字段(后面会说到),表示我们请求的是整个文件,所以Content-Length就是整个文件的大小。其余各字段是一些关于文件和服务器的属性信息。 这段返回数据同样是以最后一行的结束标志(回车换行)和一个额外的回车换行作为结束,即\r\n\r\n”。 “后面紧接的就是文件的内容了,这样我们就可以找到\r\n\r\n”,并从它后面的第一个字节开始,而\r\n\r\n”“ “ 源源不断的读取,再写到文件中了。

网站安全狗Linux版 V2.0用户使用手册

网站安全狗Linux版 V2.0用户使用手册 1.软件安装 以32位安装包为例,64位安装包把对应的32改成64即可。 步骤1 :下载软件发布包(.tar.gz格式):safedogwz_linux32.tar.gz 也可以采取wget的方式下载发布包: wget https://www.doczj.com/doc/6216312967.html,/safedogwz_linux32.tar.gz 步骤2:在root帐户下执行以下命令: tar xzvf safedogwz_linux32.tar.gz cd ApacheSafeDog32 chmod +x install.sh ./install.sh 运行时会提示输入apache服务器的配置文件路径(绝对路径),请根据您所安装的apache 的目录,填写真实的配置文件路径。 举例:/usr/local/apache2/conf/httpd.conf 注意: (1)提示:若您在输入时,不慎输入错误,请按组合键CTRL+Backspace删除。 (2)网站狗的安装目录为/etc/ApacheSafeDog,请不要删除此目录及目录下的任何内容。(3)安装完成后,请重新启动apache服务器,以使网站安全狗软件生效。 (4)如果重启apache服务器时失败,并提示Permission denied错误,请参看《网站安全狗Linux版SElinux的相关设置》一文。 2. 软件功能说明 修改网站安全狗的配置文件所在目录/etc/ApacheSafeDog/conf下的配置文件来启用网站安全狗的相应功能。 注意: (1)以下配置文件各字段的值只是举例,请根据您的实际需要自行设定。设定前请参考每个字段前的注释信息。

FTP定义以及原理详解教程

FTP定义以及原理详解教程 网络上FTP下载链接比较常见,FTP常被运用于局域网共享、互联网软件下载、以及互联网共享,它的原理是怎么样的呢?笔者给大家做个详细介绍。 什么是FTP 1. FTP协议 什么是FTP呢?FTP 是TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。 2. FTP服务器和客户端 同大多数Internet服务一样,FTP也是一个客户/服务器系统。用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照FTP 协议提供服务,进行文件传送的计算机就是FTP 服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。用户要连上FTP 服务器,就

要用到FPT 的客户端软件,通常Windows自带“ftp”命令,这是一个命令行的FTP 客户程序,另外常用的FTP 客户程序还有CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-猫眼等。 3. FTP用户授权 3.1 用户授权 要连上FTP 服务器(即“登陆”),必须要有该FTP 服务器授权的帐号,也就是说你只有在有了一个用户标识和一个口令后才能登陆FTP服务器,享受FTP服务器提供的服务。 3.2 FTP地址格式(168字) foolish_tyu (216554)于2003/03/28(23:29:05).. FTP地址如下: ftp://用户名:密码@FTP服务器IP或域名:FTP命令端口/路径/文件名 上面的参数除FTP服务器IP或域名为必要项外,其他都不是必须的。如以下地址都是有效FTP地址: ftp://https://www.doczj.com/doc/6216312967.html, ftp://list:list@https://www.doczj.com/doc/6216312967.html, ftp://list:list@https://www.doczj.com/doc/6216312967.html,:2003 ftp://list:list@https://www.doczj.com/doc/6216312967.html,:2003/soft/list.txt

sftp-ftp区别工作原理

Sftp和ftp 区别、工作原理等 最近使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的。sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。ftp over SSH2则象一个二传手。 1、SFTP的工作模式: 图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的。 图 1 SFTP工作模式 2、FTP over SSH2 此协议还是基于ftp协议的。在此协议中SSH2服务器起了一个桥梁作用,把数据在客户端和ftp之间转发。ftp协议本身包括两个通道,一个是控制通道,另一个是数据通道。 FTP over SSH2有两种情况,半安全连接(Less Secure Connection)和安全连接(Full Secure Connection)。在半安全连接时,ftp客户端先和SSH2服务器连接,在这个连接中无论控制通道和数据通道都是加密的。但是SSH2服务器和ftp服务器之间就不是加密的了,如果ftp服务器运行在另外一台机器上,SSH2服务器和ftp直接就是明文传输。见图2。

图2半安全连接 图3是安全连接模式的情形,SSH2服务器和FTP服务器在同一台服务器上。 图 3 安全连接 FTP(文件传输协议)工作原理

目前在网络上,如果你想把文件和其他人共享。最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件。 1、FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户机/ 服务器(Client / Server )架构。用户可以通过各种不同的FTP客户端程序,借助FTP协议,来连接FTP服务器,以上传或者下载文件。 2、FTP通讯端口知识 FTP服务器和客户端要进行文件传输,就需要通过端口来进行。FTP协议需要的端口一般包括两种: 控制链路--------TCP端口21 所有你发往FTP服务器的命令和服务器反馈的指令都是通过服务器上的21端口传送的。 数据链路--------TCP端口20 数据链路主要是用来传送数据的,比如客户端上传、下载内容,以及列目录显示的内容等。 3、FTP连接的两种方式 在数据链路的建立上,FTP Server 为了适应不同的网络环境,支持两种连接模式:主动模式(Port)和被动模式(Pasv)。其实这两种连接模式主要是针对数据链路进行的,和控制链路无关。 主动模式

如何使用.NET实现断点续传功能

如何使用.NET实现断点续传功能 顾名思义,断点续传就是在上一次下载时断开的位置开始继续下载。在HTTP协议中,可以在请求报文头中加入Range段,来表示客户机希望从何处继续下载。 断点续传的原理 在了解HTTP断点续传的原理之前,先来说说HTTP协议,HTTP协议是一种基于tcp 的简单协议,分为请求和回复两种。请求协议是由客户机(浏览器)向服务器(WEB SERVER)提交请求时发送报文的协议。回复协议是由服务器(web server),向客户机(浏览器)回复报文时的协议。请求和回复协议都由头和体组成。头和体之间以一行空行为分隔。 以下是一个请求报文与相应的回复报文的例子 以下为引用的内容: GET /image/index_r4_c1.jpg HTTP/1.1 Accept: */* Referer: http://192.168.3.120:8080 Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705) Host: 192.168.3.120:8080 Connection: Keep-Alive HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Tue, 24 Jun 2003 05:39:40 GMT Content-Type: image/jpeg Accept-Ranges: bytes Last-Modified: Thu, 23 May 2002 03:05:40 GMT ETag: "bec48eb862c21:934" Content-Length: 2827 JFIF H H nbsp; C [1] …. 下面我们就来说说“断点续传”。 顾名思义,断点续传就是在上一次下载时断开的位置开始继续下载。在HTTP协议中,可以在请求报文头中加入Range段,来表示客户机希望从何处继续下载。 比如说从第1024字节开始下载,请求报文如下:

异网数据安全传输解决方案原理概述

异网数据安全传输解决方案原理概述 一方案概述 随着信息技术发展,信息共享已成为网络的主旋律。但在不同网络环境中,高密级网络为了保证数据安全,防止数据外流,采用了物理隔离的措施,不能利用低密级网络的数据,浪费了宝贵的信息资源。 针对异网数据的安全传输设计出一套完整解决方案,使低密级网络数据可流向高密级网络,同时高密级网络数据不会外流至低密级网络。整个系统由硬件单元和软件单元组成。硬件单元以自主研制的单向传输设备为基础,研发出单向传输协议;软件部分使用基于摘要和属性的专用文件格式,采用软件防毒墙和文件签名的技术,保证文件传输的安全性和完整性。 为减少单向传输的环节,方案提供了文件双向传输子系统,将局域网内的文件、数据等统一汇集至一台终端,通过此终端进行文件单向传输,进而将数据单向传输统一管理,精确记录每个文件的传输历史,实现传输的可追溯。文件双向传输子系统支持断电断网保护以及断点续传。 系统架构>> 系统采用组件式的设计理念,将系统分为采集代理系统,数采传输软件,安全评估和转换管理软件;核心为文件传输平台和数据库同步平

台。依托两个基础平台完成不同格式数据(表单,数据库以及文件)的安全稳定传输。 系统架构图功能界面>>

二优势 1.单向安全传输,保障信息安全 构建不同网络数据传输平台,打通不同网络间信息传输通道,实现数据的单向共享,传输过程中经过杀毒和安全处理,保证文件安全完整传输; 2.降低沟通成本,提高工作效率 通过数据库同步平台,将不同的数据库资源统一汇总至一台服务器内,可实现数据中心数据资源数据的构建。 3.在线数据填报,灵活高效办公 智能表单填报,将格式化数据保存至系统,传输至异网系统,实现跨网数据上报。 4.跨网邮件发送,扩充沟通渠道 基于文件传输,可灵活扩充出邮件单向中继功能,实现不同网络间邮件发送。 5.数据同网汇集,统管核心数据 提供双向文件传输,可以将不同终端的文件汇总至一台终端内,可用于分布式系统中分支结点和中心结点的文件同步。 三应用场景 1、单向数据传输,数据单向由外网向内网流入,同时外网数据不会流出。

MOSES安装以及使用说明

MOSES安装以及初级说明 作为初学者对MOSES现在也没有什么深入的了解就在这里嫌丑,浅显的介绍一下。 首先是moses的官网:https://www.doczj.com/doc/6216312967.html,/moses/ 里面资料很详细,可以下载说明文档(manual.pdf)按照文档里面的提示一步步进行,一般来说整体只要依照这个步骤就没有问题 我现在本机上安装的moses,然后又在服务器上进行的运行,所以安装经验是本机的,但是两面使用的搭配是一样的都是moses+boost+GIZA+++IRSTLM。就是操作系统不一样,本机是ubuntu,而服务器是CentOS,但是基本上的过程是一样的。 一、前期安装准备 1、Boost【ubuntu下】 apt-get install libboost1.53-all-dev 2、GIZAA++【ubuntu下】 wget https://www.doczj.com/doc/6216312967.html,/files/giza-pp-v1.0.7.tar.gz tar xzvf giza-pp-v1.0.7.tar.gz cd giza-pp Make 在编译后会生成三个可执行文件 · giza-pp/GIZA++-v2/GIZA++ · giza-pp/GIZA++-v2/snt2cooc.out · giza-pp/mkcls-v2/mkcls 这三个文件是在之后主要要使用的文件,可以单独把这三个文件提取出来放到一

个方便的位置,不觉得麻烦的话也可以每次键入路径,不过使用频率不算高还可以。 比如说建立tools\ 把这三个文件放进去 可以在编译的时候直接指出GIZA++的位置,也可以在编译的时候不指出,在使用的时候再指明,我采用的是后者。 3、IRSTLM 这个我在ubuntu和centOS下都编译了,方法都很简单 1)【ubuntu下】 在编译IRSTLM之前,需要安装两个工具。使用下面的命令来安装这两个工具:$ sudo apt-get install automake $ sudo apt-get install libtool 接下来就可以安装IRSTLM了。先下载软件包,下载地址为: https://www.doczj.com/doc/6216312967.html,/projects/irstlm/files/ 使用下面的命令进行安装: tar zxvf irstlm-5.80.03.tgz cd irstlm-5.80.03 ./regenerate-makefiles.sh ./configure --prefix=$HOME/irstlm make install 这样就编译安装好了IRSTLM,记住irstlm的位置,以后用得到。 2)【centOS下】 其实在这个下面和ubuntu里面没有什么区别 step 0: sh regenerate-makefiles.sh

基于HTTP协议的多线程下载he断点续传的实现

毕业设计(论文) 题目基于HTTP协议的多线程下载和 断点续传的实现 学生姓名学号 专业计算机科学与技术班级 指导教师 评阅教师 完成日期年月日

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。 作者签名:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 本学位论文属于 1、保密□,在_________年解密后适用本授权书。 2、不保密□。 (请在以上相应方框内打“√”) 作者签名:年月日 导师签名:年月日

目录 摘要 (1) 前言 (2) 1 HTTP协议 (3) 1.1HTTP协议的发展 (3) 1.2HTTP协议的特点 (4) 1.3HTTP会话及报文格式 (6) 2 Windows套接字 (8) 2.1 什么是套接字 (8) 2.2 套接字规范 (9) 2.3 Windows套接字的发展 (11) 2.4 套接字的使用和WinSock API (12) 3 多线程及断点续传技术 (15) 3.1 多线程的优点 (18) 3.2 多线程之间的互斥和同步 (16) 3.3 什么是断点续传技术 (17) 4 下载工具的设计与实现 (18) 4.1 基本结构与数据流程图 (18) 4.2 程序基本功能设计与实现 (19) 4.3 代码分析 (24) 4.4主要功能实现算法 (28) 5 总结 (35) 致谢 (36) 参考文献 (37) 附录 (38)

FTP断点续传的原理

本文建立在你对socket知识有一点点的基础之上(有一点点就足够了:)) FTP客户端实现要建立两个通道,一个控制命令通道,让FTP服务器知道客户端要干什么,一个数据传输通道。所谓的两个通道只不过是两个调用了connect函数的连接,只是控制命令通道专门用来传输一些字符串命令信息,而数据通道则是用来传输文件。控制命令通道一定是由客户端向服务器的连接(默认的端口是21,也可以指定端口,这要看服务器的设置)。连接的过程完成了FTP的登录。数据通道则不一定啦,具体哪个连哪个,请看下面对PASV命令的解释。 其实FTP断点续传的原理很简单,可分为断点下载和断点上传。 客户端的实现步骤如下: 一、下载: 1、向服务器发送“REST + 本地文件长度”命令,告诉服务器,客户端要断点下载了。这时服务器还不知道客户端要下载哪个文件; 2、向服务器发送“RETR + 文件名”命令,通知服务器要下载的文件名,这时服务器开始定位文件指针读文件并发送数据。 3、客户端定位本地文件指针(文件末尾); 4、两端的准备工作都做完了以后,客户端创建socket,以被动或非被动方式建立数据通道,循环调用recv接收数据并追加入本地文件; 二、上传: 1、获取服务器上和本地要上传文件的同名文件大小; 2、向服务器发送“APPE +文件名”,通知服务器,接下来从数据通道发送给你的数据要附加到这个文件末尾。 3、定位本地文件指针(和FTP上文件大小相同的位置) 4、从文件指针处读数据并发送。 好了,FTP断点续传的原理就这么简单。代码里将断点上传和断点下载放到同一个函数(MoveFile)里,通过get参数说明是上传还是下载。当然,整个 FTP类的实现有800多行,包括登录、退出、获取FTP文件大小、删除FTP服务器上文件、响应服务器,解析响应信息等函数。相应的注释代码里都有,这里就不一一熬述了。

VLC简介及使用说明

一、简介 VLC的全名是Video Lan Client,是一个开源的、跨平台的视频播放器。VLC支持大量的音视频传输、封装和编码格式,完整的功能特性列表可以在这里获得https://www.doczj.com/doc/6216312967.html,/vlc/features.html,下面给出一个简要的不完整的列表:操作系统:Windows、WinCE、Linux、MacOSX、BEOS、BSD 访问形式:文件、DVD/VCD/CD、http、ftp、mms、TCP、UDP、RTP、IP组播、IPv6、rtsp 编码格式:MPEG*、DIVX、WMV、MOV、3GP、FLV、H.263、H.264、FLAC 视频字幕:DVD、DVB、Text、V obsub 视频输出:DirectX、X11、XVideo、SDL、FrameBuffer、ASCII 控制界面:WxWidgets、QT4、Web、Telnet、Command line 浏览器插件:ActiveX、Mozilla(firefox) 实际上为了更清晰一点,我们可以反过来说说VLC不支持哪些常见的。首先是RealVideo (Real的Audio部分支持),因为Real的Video加码器存在版权的问题。实际上VLC 0.9.0已经加入了RealVideo的支持,但是需要额外的解码器(类似MPlayer)。另外,VLC不支持3GP的音频格式AMR。 VLC原先是几个法国的大学生做的项目,后来他们把VLC作为了一个开源的项目,吸引了来自世界各国的很多优秀程序员来共同编写和维护VLC,才逐渐变成了现在这个样子。 至于为什么叫VideoLan Client,是因为以前还有一个VideoLan Server的项目(简称VLS),而目前VLS的功能已经合并到VLC中来,所以VLC不仅仅是一个视频播放器,它也可以作为小型的视频服务器,更可以一边播放一边转码,把视频流发送到网络上。VLC最为突出的就是网络流的播放功能,例如MPEG2的UDP TS流的播放和转发,几乎是无可替代的。 对普通用户来说,VLC还有一个好处是不影响Windows中的解码器。VLC通常不影响也不依赖于系统中自带的解码器(除了realvideo和quicktime的类型),很绿色很环保;更不用担心流氓软件、广告插件之类的恶心的玩意儿。 从程序结构来看,VLC的可扩展性是相当优秀的。VLC绝大部分用高效的C代码来编写(少量的C++和汇编),但是实现了完全动态的模块化,所有功能包括程序框架本身都是module,可以在运行时载入,这使得VLC可以轻易的扩展多种功能并且容易维护。它的架构有一点类似于DirectShow的技术。 VLC也很注重版权方面的问题,你可以放心的自由的使用而不需要为版权的问题担心——VLC只包括免费的、自由的库。VLC基于GPL,因此也可以用于商业应用,只需要保留GPL,以及公开源代码,如果你修改了VLC的话。 下面是VLC相关的一些链接 VLC官方网站:https://www.doczj.com/doc/6216312967.html,/ VLC下载页面:https://www.doczj.com/doc/6216312967.html,/vlc/ VLC下载目录(源码和安装包):https://www.doczj.com/doc/6216312967.html,/pub/videolan/vlc/ VLC Nightly Builds:https://www.doczj.com/doc/6216312967.html,/ VLC 开发Wiki:https://www.doczj.com/doc/6216312967.html,/Developers_Corner VLC Win32第三方库预编译包下载目录:https://www.doczj.com/doc/6216312967.html,/pub/testing/win32/ VLC 官方论坛:https://www.doczj.com/doc/6216312967.html,/ VLC 邮件列表:https://www.doczj.com/doc/6216312967.html,/developers/lists.html 二、Windows平台编译 第一步,要创建编译VLC的环境。VLC在Windows下可以用Msys+MingW 或者Cygwin 的方式来编译,二者大同小异,这里主要介绍Cygwin。

相关主题
文本预览
相关文档 最新文档