当前位置:首页 » 文件管理 » cftp多线程

cftp多线程

发布时间: 2023-02-12 20:07:54

1. 各位高手,谁能告诉我建立ftp的详细方法

建立个人FTP服务器教程 以及 内网、局域网设置IP,建立FTP

【怎样建立个人FTP】

Serv-U FTP Server 5.0.0.11 final 特别破解版汉化版
点击下载

《FTP Serv-U 教程》+《FTP的建立和维护手册》
点击下载

在网上做过软件下载的人都知道,建立一个FTP下载服务器相对比较简单,一般用WIN2000下自带的IIS就可以,但IIS在功能上好多都不尽人如意,下面我就介绍一款功能非常强大,但使用简单的FTP服务器构建软件-Serv-U FTP Server,让我们也来体验一下自己DIY FTP服务器的快乐! 在说明使用之前,让我先大致介绍一下Serv-U(本文中提到Serv-U版本为3.0.0.17), Serv-U 是一个可以运行于Windows 95/98/2000/ME 和 Windows NT 4.0下的FTP服务器程序如图所示,

有了它,你的个人电脑就可以模拟为一个FTP服务器,也就是说,你所连接的网络中的计算机用户可以访问你的个人电脑,通过FTP协议(文件传输协议)复制、移动、删除你的电脑中的文件或文件夹,可以做一切权限所允许的事情。FTP协议规定了计算机之间的标准通讯方式,使所有不同类型,不同操作系统,不同格式的电脑之间得以互换文件。它可以用最简单的方式创建用户帐号,并且在硬盘空间上划分一定的区域用以存放文件,让用户以各种FTP客户端软件(如CuteFTP、WS_FTP等)上传或下载所需要的文件。

有许多FTP服务器和客户端软件可用于不同的系统中,Serv-U是用于运行MS-Windows 并且已安装了WinSock 版本 1.1 兼容 TCP/IP协议的个人电脑中的,这几乎包括了所有的Windows操作系统。

Serv-U由两大部分组成,引擎和用户界面。Serv-U引擎(ServUDaemon.exe)其实是一个常驻后台的程序,也是Serv-U整个软件的心脏部分,它负责处理来自各种FTP客户端软件的FTP命令,也是负责执行各种文件传送的软件。在运行Serv-U引擎也就ServUDaemon.exe
文件后,我们看不到任何的用户界面,它只是在后台运行,通常我们无法影响它,但在ServUAdmin.exe中我们可以停止和开始它。Serv-U引擎可以在任何Windows平台下作为一个本地系统服务来运行,系统服务随操作系统的启动而开始运行,而后我们就可以运行用户界面程序了。在Win NT/2000系统中,Serv-U会自动安装为一个系统服务,但在Win 9x/Me中,你需要在“服务器”面板中选择“自动开始”,才能让它转为系统服务。Serv-U用户界面(ServUAdmin.exe)也就是Serv-U管理员,它负责与Serv-U引擎之间的交互。它可以让用户配置 Serv-U,包括创建域、定义用户、并告诉服务器是否可以访问。启动Serv-U管理员最简单的办法就是直接点接系统栏的“U”形图标,当然,你也可以从开始菜单中运行它。

在此有必要把Serv-U中的一些重要的概念给大家讲清楚:每个正在运行的Serv-U引擎可以被用来运行多个“虚拟”的FTP服务器,在管理员程序中,每个“虚拟”的FTP服务器都称为“域”,因此,对于服务器来说,不得不建立多个域时是非常有用的。每个域都有各自
的“用户”、“组”和设置。一般说来,“设置向导”会在你第一次运行应用程序时设置好一个最初的域和用户帐号。服务器、域和用户之间的关系大家可以参考下表:
*Serv-U 服务器
*域 1
*用户帐号 1
*用户帐号 2
*用户帐号 3
*域 2
*用户帐号 1
*用户帐号 2
*域 3
*用户帐号 1
*用户帐号 1

这个表有点类似与Serv-U管理员中服务器、域和用户的排列。

Serv-U FTP Server 是试用软件,安装后三十天内,你可以作为“专业版本”使它,但试用期过后,你就只能作为免费的“个人版
本”使用了,只有基本功能了。

好了,说了这么多,还没到关键部分-如何自己来建立FTP服务器。下面我就一步一步来说明。
一、 安装原版软件和汉化补丁,这个过程就不多说了,想必没人不会的。
二、 建立第一个本地FTP服务器
安装完成后程序会自动运行,你也可以在菜单中选择运行。
1、 第一次运行程序,它会弹出设置向导窗口如图,

将会带你完成最初的设置,
2、 单击“下一步”,出现“显示菜单图像”的窗口,问你是否在菜单中显示小图像,看各人喜欢了;
3、 单击“下一步”,这个窗口是让你在本地第一次运行FTP服务器,只要“下一步”就行了。
4、 接下来要你输入你的IP地址如图,

如果你自己有服务器,有固定的IP,那就请输入IP地址,如果你只是在自己电脑上建立FTP,而且又是拨号用户,有的只是动态IP,没有固定IP,那这一步就省了,什么也不要填,Serv-U 会自动确定你的IP地址,“下一步”;
5、 在这儿要你输入你的域名,如图

如果你有的话,如:ftp.abc.com,没有的话,就随便填一个;
6、 “下一步”,询问你是否允许匿名访问如图

一般说来,匿名访问是以Anonymous为用户名称登录的,无需密码,当然如果你想成立一个会员区什么的,就应该选择“否”,不让随便什么人都可以登录,只有许可用户才行,在此我们填“是”;
7、 “下一步”,问你匿名用户登录到你的电脑时的目录,如图,

你可以自己指定一个硬盘上已存在的目录,如F:\temp\xyz;
8、 “下一步”,询问你是否要锁定该目录,锁定后,匿名登录的用户将只能认为你所指定的目录(F:\temp\xyz)是根目录,也就是说他只能访问这个目录下的文件和文件夹,这个目录之外就不能访问,对于匿名用户一般填“是”;
9、 “下一步”,询问你是否创建命名的帐号,也就是说可以指定用户以特定的帐号访问你的FTP,这对于办会员区可很有用哦,你可以对于每个人都创建一个帐号,每个帐号的权限不同,就可以不同程序地限制每个人的权利,方法将在后面讲到,这里选择“是”;
10、 “下一步”,请你填入所要建立的帐号的名称,如图,如:ldr,

11、 “下一步”,请输入密码,如:123,
12、 “下一步”,询问登录目录是什么,这一步与第7步一样,如:F:\temp
13、 “下一步”,询问你是否要锁定该目录,同第8步,这里选择“否”;
14、 接下来询问你这次创建的用户的管理员权限,如图,

有几项选择:无权限,组管理员,域管理员,只读管理员和系统管理员,每项的权限各不相同;这里选择“系统管理员”;
15、 最后一步,点击“完成”就OK了,你有什么需要修改的,可以点“上一步”,或者进入Serv-U管理员直接修改。至此,我们建立
了一个域ftp.abc.com,两个用户,一个Anonymous,一个ldr。

三、 既然我们已经建立好FTP服务器,那么我们就应该可以用FTP客户端软件来尝试登录。
怎么办呢?其实很简单,我们不用上网,就可以测试。我们知道,不上网时,本地机的IP地址默认就为127.0.0.1,FTP端口号为21。打开FTP客户端软件,我就用FlashFXP来说明,打开快速连接,填入相应内容,如图

然后连接,如图

可以看到,我左边窗格以Anonymous登录,右边窗格以ldr登录,由于是本地机,所以速度奇快,上网后,假如我要让你登录到我的电脑上,我只要把我的上网时的IP地址给你,你就可以匿名访问我的电脑了(注意不要开防火墙),是不是很方便?

四、Serv-U管理员中的各项设置
在设置完成后,将会进入Serv-U管理员的主界面,如图

左边窗格中显示各个栏目,右边窗格中显示各个栏目的具体选项,下面就大概讲一讲设置内容。
1、 在图中,我们可以人为地控制Serv-U引擎的运行或停止,记住,在Win 9x/Me 中,我们就要在此选择“系统服务”,才会运行
Serv-U引擎。
2、 “许可”,如果你花美元买了注册号,就可以在此输入。
3、 “设置”,这个设置是对于“本地服务器”来说的。“常规”设置中,如图

可以限制服务器的最大速度,可以拦截FXP(站点到站点传送),也可以限制用户的数量,这样不至于你的服务器被拖跨。“目录缓存”设置中,如图

允许你自己确定目录列表的个数以及超时时间,在Windows 95 和 NT下,目录列表默认设置为25,当缓存满了之后,新的请求将替换老的请求。“高级”设置中,如图

可以让你自己定义服务器、Socket、文件的上传和下载的各项设置。
4、 “活动”,在这里记录了用户的活动日志,已封锁的IP的活动日志,以及任务日志;任务日志中显示的就是你开始停止的各项操作记录,你可以点击右击,选择一此过滤文本,使其只显示你所想见的内容,如图

5、 “域”,这里包含了你一开始根据向导所建立的用户、设置、域等。“域--设置”中所设置的内容其实与第3步差不多,只是它更
加具体,可以对于每一个不同域定制。“域--活动”中记载了这个域下所有用户的活动情况。
6、 “域--组”,我们可以自己建立一些便于管理的组,然后把一类的用户归到一个组中。
7、 “域--用户”中,大家可以看到一开始我们建立的两个帐号,一个Anonymous,一个ldr。现在就帐号ldr来对其中的细节设置说明一下。
A、“帐号”栏,如图

对于一些不守规则的人,我们可以选择“禁用帐号”,虽然有帐号,但可以使用户一时间无法登录;你也可以设置让程序到达某个日期后自动删除某个帐号;下面几栏是这个帐号的基本信息,我们都可以在此更改,其中密码改过后并不显示,而是统一显示<>,特别要注意选项“锁定用户于主目录”,什么意思呢?大家应该碰到,每次我们登录到FTP服务器上后,在根目录下只显示“/”,选择这项选项后,就是这样,如果不选,会出现什么情况呢?你可以做一下试验,在根目录下将显示“/f:/temp/”,也就是说显示了你硬盘中的绝对
地址,这在某些情况下是很危险的,有不怀好意的高手,你就麻烦了!

你可以隐藏属性为隐藏的文件,可以限制同一IP的登录个数,是否允许用户更改密码(这需要客户端软件的支持),最大上传下载的速
度,超时时间以及空闲时间,你也可以限制最大用户数量,如20,说明同时只能有20个用户登录。
C、“目录访问”栏,如图

在此你可以控制用户对于文件目录的权限,对文件有读取、写入、删除、追加、执行等操作,对于文件夹有列表、创建、删除,以及是否继承子目录;如果觉得目录不够,你也可以添加可访问的目录。
D、“IP访问”栏,如图

在这里你可以规定某个IP是否可以访问你的FTP服务器,你可以拒绝它的访问,只要填上相应的IP地址,以后由这个IP的访问通通被拦下。
E、“上传/下载率”栏,如图

在这里你可以设置上传和下载之间的比值,控制好上传和下载之间的数据流量关系。
F、“配额”栏,如图

这里你可以为每个FTP用户设置磁盘空间,点击“计算当前”,可以知道当前目前下的所有空间大小,在“最大”一栏中填入你想要限制的容量。

最后有一点,改过设置后一定要点击右键,选择“应用”使设置生效才行,否则一切都白做了!!
希望大家学会后,能为更多的人提供下载,享受宽带带来的快乐!

==========================================================================================================

SERV-U FTP的欢迎词设置
让你的SERV-U FTP看起来更专业一点
现在很多的朋友都用SERV-U做个人FTP的服务器,有关如何使用SERV-U架设服务器的文章很多了,这儿我就不多说了。不过大家不知道注意到了没有,当你登陆很多FTP的时候,会显示一些欢迎信息,比如说显示你的IP,告诉你目前有多少人在使用FTP,带宽是多少等等。。。看起来就比较的专业样子。其实你自己也是可以做的,SERV-U这个软件本身就有这个功能。下面我就说明以下如何在自己的FTP里面加上这些信息。

第一、先建立一个文本文件,随便取一个名字。我们这儿就取message.txt吧。

第二、这个这个文本文件里面加上这些文字

-----------------------------------
欢迎来到XXX的个人FTP服务器
你的IP地址是:%IP
目前服务器所在的时间是 %time
已经有 %u24h 个用户在最近24小时访问过本FTP
本FTP服务器已经运行了 %ServerDays 天,%ServerHours 小时 和 %ServerMins 分。

服务器的运行情况:

所有登陆用户数量: %loggedInAll total
当前登陆用户数量: %Unow
已经下载字节数: %ServerKbDown Kb
已经上传字节数: %ServerKbUp Kb
已经下载文件数: %ServerFilesDown
已经上传文件数: %ServerFilesUp
服务器平均带宽: %ServerAvg Kb/sec
服务器当前带宽: %ServerKBps Kb/sec
------------------------------------

其中XXX可以改成你的名字

你也可以加上一些你自己认为喜欢的文字,不过要注意的是每行最好不要超过80个字符

其中以%开头的都是一些变量,下面是SERV-U能支持的变量

时间和日期

%Time - 显示你的计算机当前时间
%Date - 显示你的计算机当前日期

服务器的统计信息

%ServerDays - 显示服务器已经运行的天数
%ServerHours - 显示服务器已经运行的小时数
%ServerMins - 显示服务器已经运行的分钟数
%ServerSecs - 显示服务器已经运行的秒数
%ServerKbUp - 显示自从服务器运行以来已经上传的字节数
%ServerKbDown - 显示自从服务器运行以来已经下载的字节数
%ServerFilesUp - 显示自从服务器运行以来已经上传的文件数
%ServerFilesDown - 显示自从服务器运行以来已经下载的文件数
%LoggedInAll - 显示自从服务器运行以来已经登陆的用户数
%ServerAvg - 显示服务器的平均带宽
%ServerKBps - 显示服务器的当前带宽

服务器的设定信息

%MaxUsers - 显示服务器能同时登陆的最大用户数量
%MaxAnonymous - 显示服务器能同时登陆的最大匿名用户数量

用户信息

%Name - 显示登陆的用户名
%IP - 显示登陆的用户IP地址
%Dir - 显示登陆的用户的当前目录
%Disk - 显示登陆的用户的当前磁盘
%DFree - 显示登陆的用户的当前磁盘空间,单位是MB
%FUp - 显示登陆的用户上传的文件数量
%FDown - 显示登陆的用户下载的文件数量
%FTot - 显示登陆的用户上传和下载的总的文件数量
%BUp - 显示登陆的用户上传的字节数,单位是KB
%Bdown - 显示登陆的用户下载的字节数,单位是KB
%BTot - 显示登陆的用户上传和下载的总字节数,单位是KB
%TconM - 显示登陆用户连接时间,单位是分钟
%TconS - 显示登陆用户连接时间,单位是秒,要和%TconM一起使用
%RatioUp - 显示登陆用户的上传流量限制
%RatioDown - 显示登陆用户的下载流量限制
%RatioCredit - 显示登陆用户还有多少credit可以上传和下载,这个是针对有些FTP是要上传多少文件,才能下载多少文件而设置的
%QuotaUsed - 显示登陆用户的已经使用了多少空间,单位是KB
%QuotaLeft - 显示登陆用户的还有多少空间可以使用,单位是KB
%QuotaMax - 显示登陆用户的的最大空间,单位是KB
后面3个是针对有磁盘限制的用户设置的

用户数量

%UNow - 显示当前有多少用户连接
%UAll - 显示从服务器运行以来一共有多少用户连接过
%U24h - 显示最近24小时有多少用户
%UAnonAll - 显示当前总的匿名用户数量
%UAnonThisIP - 显示所有匿名登陆的用户数
%UNonAnonAll - 显示所有当前非匿名登陆用户数
%UNonAnonThisIP - 显示所有非匿名登陆用户数
%UThisName - 显示所有使用这个名字登陆的用户数

自己在先建立一个.txt文件,输入你想要显示的文字,具体参数看上面的内容,然后在Serv_u内的server设置里面,加入这个.txt文件就可以了

==========================================================================================================

——常见FTP登陆Log信息——
常见FTP登陆Log信息

1.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER anonymous
530 Sorry, no ANONYMOUS access allowed.
QUIT
这个就是不许匿名登录啦

2.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
331 User name okay, need password.
PASS xxxxxx
530 Not logged in.
QUIT
一般是密码输入错误时出现的信息,但对于Serv-U来说,如果没有这个帐号(test)存在,也会产生同样的出错信息。

3.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
ERROR: Connection timed out
这个表明对方未开机,也可能是对方不在你能访问的范围内

4.
Connecting to xxx.xxx.xxx.xxx Port 21 (#1)
ERROR: Connection refused
这个一般表明对方已开机,但未开启FTP服务(没有开Serv-U)
也可能为对方不提供在这个端口上的服务

5.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
Disconnected from server.
Connection attempt failed. Waiting for retry...
出现这个信息实在是很倒霉,你极有可能被对方Ban了。
如果只是Ban几分钟or几小时or一天还好,不然只有和站长说说好话,让他给你解封吧。

6.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
USER XXX
331 User name okay, need password
PASS xxxxxx
530 Not logged in, unauthorized IP address.
QUIT
这个有点麻烦,你的IP不在站长允许访问的IP范围内,只有和站长联系,让他把你的IP网段加入Allow Access列表里吧

7.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER user
421 Too many users - please try again later.
哈哈,这个很常见吧,用户太多

8.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
530 Not logged in, only one session from same IP allowed at a time.
QUIT
每个IP只能开一个下载,就不要用多线程啦,小心Ban了你。

----------------------------------------------------------------------------------------------

内网、局域网如何设置IP,建立FTP
首先,我们知道动态IP机器出去的最大问题是IP,因为动态IP机器的IP外网是无法识别的,我们讨论的是最普通的局域网内工作站出去做FTP和WEB站点的问题!
动态域名解析正好能够解决此类问题,它的原理是将本机的动态IP自动映射到预先申请好的虚拟域名上,这样外面就可以通过访问固定的虚拟域名来访问到动态IP机器了。
<花生壳>该软件使用方便,几乎不用动什么脑筋,唯一要做的事情就是去注册,然后申请一个以vicp.net为后缀虚拟域名。
1.进入http://www.oray.net/,下载<花生壳>,并“注册网域护照”!
2.注册完成后,登陆“我的控制台”

3.进入“我的控制台”,点击左下角的‘我要.激活花生壳服务’

4.点击“开始”进入

在‘免费域名’填入不重复的你想要得名字就是你将来的域名,例如:AGHU

5.以后就是“服务条款”和“填写站点信息”,这些地球人都知道怎么填!
填完结束,恭喜你,你的域名已经有了!例如:你以后的域名就是AGHU.VICP.NET
申请完免费域名以后,就安装你已经下载的<花生壳>,然后打开运行

输入你的注册名和密码,等一下就会激活你的域名,兴奋吧!
然后你的ftp和web就可以启动咯!
架设ftp服务器的事情,另外有帖子详细介绍了!!
======================================
局域网内公开的ip只有一个,除非你是在主机上建私服,否则你无法公开你的私服,只能在局域网内,解决的办法如下。
由于公网ip地址有限,不少isp都采用多个内网用户通过代理和网关路由共用一个公网ip上internet的方法,这样就限制了这些用户在自己计算机上架设个人网站。要实现对我们来说是比较困难的,首先得得到系统管理员的支持才能够实现。因为这一切的设置必须在代理服务器上做的。要实现这一点,可以用windows 2000 服务者 的端口映射功能,除此之外winroute pro也具有这样的功能,还有各种企业级的防火墙。而对于我们这些普通用户,恐怕还是用windows 2000 的转换以解决ip地址匮乏问题。在防火墙上实现nat后,可以隐藏受保护网络的内部拓扑结构,在一定程度上提高网络的安全性。如果反向nat提供动态网络地址及端口转换功能,还可以实现负载均衡等功能端口映射功能可以让内部网络中某台机器对外部提供www服务。 端口映射功能还可以完成一些特定代理功能,比如代理pop,smtp,telnet等协议。理论上可以提供六万多个端口的映射,恐怕我们永远都用不完的。

一、下面来介绍一下通过nat共享上网和利用nat来实现端口映射。

1、在windows 2000 server上,从管理工具中进入“路由和远程访问”(routing 并且 遥远 access)服务,在服务器上鼠标右击,-》“配置并启用路由和远程访问”

2、点“下一步”

3、选“internet连接服务器”,让内网主机可以通过这台服务器访问internet.(最好先配置好nat共享,让内网主机可以正常上网,不然的话,配好端口映射后再来配置nat共享就有点麻烦了,弄的不好nat还共享不了。)

4、选“设置有网络地址转换(nat)路由协议的路由器”,不要选“设置internet连接共享(ics)”.(ics与nat的区别在于使用的容易程度上,为了启用ics,只需要选择一个复选框就可以了,而为了启用nat,则需要更多的配置任务,此外,ics用于小型网络上的原因还在于:针对内部主机,它需要有一个固定的ip地址范围;针对与外部网络的通信,它被限制在单个公共ip地址上;它只允许单个内部网络接口。)

5、先在此说一下我的网络情况:internet连接192.200.

2. 求助网络编程题目.C++

一.概述
TCP/IP协议是一个四层协议,它由应用层、传输层、网络层和链路层构成。TCP/IP协议栈的每一层都由许多协议构成,从而构成了一个协议簇。
应用层主要包括的协议有Telnet、FTP、HTTP、SMTP/POP3和DNS等。

传输层主要包括的协议有TCP和UDP。

网络层主要包括IP和IP的附属协议。

数据链路层主要包括的协议有ARP(地址解析协议)、RARP协议、Ethernet协议等。
FTP(File Transfer Protocol)协议主要用来在网络上进行文件传输。FTP通讯除了有一个默认的端口21外,还有其他端口,同城两个端口同时进行数据传输。一个是默认的端口(通常为21),主要进行控制连接,即进行命令协议及服务器端响应码的传输。另一个非标准端口主要进行数据,上传下载文件等。

关于FTP协议和FTP命令的详细描述,参考《Visual C 网络通信编程实用案例精选》。
实现FTP协议,有两种方式,实用WinInet API和使用基本Winsock。对于一般应用,用WinInet效率要高,而且简单。也可以用Winsock来编写,这样更加灵活,但是复杂度高且需要对协议非常熟悉。

二.VC开发
在项目中,为了开发效率,使用了WinInet的方式。

FTP是MFC的WinInet支持的三个Internet功能(HTTP, gopher)之一,我们需要先创建一个CInternetSession实例和一个CFtpConnection对象就可以实现和一个 FTP服务器的通信。不需要直接创建CFtpConnection对象,而是通过调用CInternetsession::GetFtpConnection来完成这项工作。它创建CFtpConnection对象并返回一个指向该对象的指针。

要联接到FTP服务器,需要两个步骤,首先必须创建一个CInternetSession对象,用类CInternetSession创建并初始化一个或几个同时存在的Internet会话(session),并描述与代理服务器的连接(如果有必要的话),如果在程序运行期间需要保持与Internet的连接,可以创建一个CInternetsession对象作为类CWinApp的成员。

然后利用CInternetsession对象获取CFtpConnection对象。MFC中的类CFtpConnection管理我们与Internet服务器的连接,并直接操作服务器上的目录和文件。

1.Ftp连接类的信息
下面我们简要介绍连接类的信息

1.1 建立连接
CInternetsession对象

CInternetsession(LPCTSTR pstrAgent, DWORD dwConText, DWORD dwACCESSType, LPCTSTR pstrProxyName, LPCTSTR pstrProxyBypass, DWORD dwFlags);

在创建CInternetSession对象时调用这个成员函数,CInternetsession是应用程序第一个要调用的Internet函数,它将创始化内部数据结构,以备将来在应用程序中调用。如果dwFlags包含INTERNET_FLAG_ASYNC,那末从这个句柄派生的所有的句柄,在状态回调例程注册之前,都会出现异步状态。如果没有打开Internet连接,CInternetsession就会抛出一个例外,AfxThrowInternetException。

GetFtpConnection()函数

CFtpConnection* CIternetsession::GetFtpConnection(LPCTSTR pstrServer, LPCTSTR pstrUserName, LPCTSTR pstrPassword, INTERNET_PORT nPort, BOOL bPassive);

调用这个函数建立一个FTP连接,并获得一个指向CFtpConnection对象的指针,GetFtpConnection连接到一个FTP服务器,创建并返回指向CFtpConnection对象的指针,它不在服务器上进行任何操作。如果打算读写文件,必须进行分步操作。关于查找,打开和读写文件的信息需参考CFtpConnection和CFtpFileFind类。

对这个函数的调用返回一个指向CFtpConnection对象的指针。如果调用失败,检查抛出的CInternetException对象,就可以确定失败的原因。

1.2 远程目录操作
CreateDirectory()函数

BOOL CreateDirectory( LPCTSTR pstrDirName );

Return Value

Nonzero if successful; otherwise 0. If the call fails, the Windows functionGetLastError may be called to determine the cause of the error.

Parameters

pstrDirName

A pointer to a string containing the name of the directory to create.

Remarks

Call this member function to create a directory on the connected server.

Use GetCurrentDirectory to determine the current working directory for this connection to the server. Do not assume that the remote system has connected you to the root directory.

The pstrDirName parameter can be either a partially or a fully qualified filename relative to the current directory. A backslash (\) or forward slash (/) can be used as the directory separator for either name. CreateDirectory translates the directory name separators to the appropriate characters before they are used.

注意:CreateDir 在FTP服务器上创建已经存在的文件夹时会 返回FALSE,而且只能创建到当前(根)目录下

RemoveDirectory()函数

BOOL RemoveDirectory( LPCTSTR pstrDirName );

Return Value

Nonzero if successful; otherwise 0. If the call fails, the Win32 functionGetLastError may be called to determine the cause of the error.

Parameters

pstrDirName

A pointer to a string containing the directory to be removed.

Remarks

Call this member function to remove the specified directory from the connected server.

Use GetCurrentDirectory to determine the server’s current working directory. Do not assume that the remote system has connected you to the root directory.

The pstrDirName parameter can be either a partially or fully qualified filename relative to the current directory. A backslash (\) or forward slash (/) can be used as the directory separator for either name. RemoveDirectory translates the directory name separators to the appropriate characters before they are used.

注意:DeleteDir文件夹中有内容,先删除文件夹中文件,才可以删文件夹,否则返回FALSE, 删除不存在的文件夹返回FALSE

1.3 文件上传下载删除
GetFile()函数

BOOL GetFile(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile, BOOL bFailExists, DWORD dwAttributes, DWORD dwFlags, DWORD dwContext);

调用这个成员函数,可以从FTP服务器取得文件,并且把文件保存在本地机器上。GetFile()函数是一个比较高级的例程,它可以处理所有有关从FTP服务器读文件,以及把文件存放在本地机器上的工作。如果dwFlags为 FILE_TRANSFER_TYPE_ASCII,文件数据的传输也会把控制和格式符转化为Windows中的等阶符号。默认的传输模式是二进制模式,文件会以和服务器上相同的格式被下载。

pstrRemoteFile和 pstrLocalFile可以是相对于当前目录的部分文件名,也可以是全文件名,在这两个名字中间,都既可以用反斜杠(\)或者正斜杠(/)来作为文件名的目录分隔符,GetFile()在使用前会把目录分隔符转化为适当的字符。

可以用自己选择的值来取代dwContext默认的值,设置为上下文标识符与CFtpConnection对象的定位操作有关,这个操作由CFtpConnection中的CInternetSession对象创建。返回给CInternetsession::OnStatusCallBack的值指出了所标识操作的状态。

如果调用成功,函数的返回为非0,否则返回0,如果调用失败,可以调用Win32函数GetLastError(),确认出错的原因。

需要注意:本地路径须为绝对路径,远程路径可为相对路径,如hello/hello.zip,如果本地文件已经存在,则返回FALSE。

PutFile()函数

BOOL PutFile(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoveFile ,DWORD dwFlags, DWORD dwContext);

调用这个成员函数可以把文件保存到FTP服务器。PutFile()函数是一个比较高级的例程,它可以处理有关把文件存放到服务器上的工作。只发送数据,或要严格控制文件传输的应用程序,应该调用OpenFile和 CInternet::Write。利用自己选择的值来取代dwContext默认的值,设置为上下文标识符,上下文标识符是 CInternetSession对象创建的CFtpConnection对象的特定操作有关,这个值返回给CInternetsession::OnStateCallBack,从而把操作的状态通报给它所标识的上下文。

如果调用成功,函数的返回为非0,否则返回0,如果调用失败,可以调用Win32函数GetLastError(),确认出错的原因。

主要注意:如果重复上传文件,会把服务器上的文件覆盖掉,且可以上传特定文件夹下,如hello/hello.zip

Remove()函数

BOOL Remove( LPCTSTR pstrFileName );

如果调用成功,函数的返回为非0,否则返回0,如果调用失败,可以调用Win32函数GetLastError(),确认出错的原因。

pstrFileName

需要删除的服务器上的文件名

Call this member function to delete the specified file from the connected server.

The pstrFileName parameter can be either a partially qualified filename relative to the current directory or fully qualified. A backslash (\) or forward slash (/) can be used as the directory separator for either name. The Remove function translates the directory name separators to the appropriate characters before they are used.

注意:Remove如果删除的文件不存在,则返回FALSE,支持相对路径

2. 测试实例
2.1 例一 连接到FTP站点

建立连接到ftp.microsoft.com的程序,它是一个单文档程序。并且连接由视图类的构造函数完成。

建立单文档程序ftp

在ftpview.h中加入包含#include < afxinet.h >

在ftpview.h中添加如下的成员变量

public:

CInternetSession *m_pInetsession;

CFtpConnection *m_pFtpConnection;

在ftpview.cpp中的ftpview构造函数中加入下面的代码

CFtpView::CFtpView()

{

m_pInetSession=new CInternetsession

(AfxGetAppName(),1,

PRE_CONFIG_INTERNET_ACCESS);

try

{

m_pFtpConnection=m_pInetsession->

GetFtpConnection("FTP.MICROSOFT.COM");

}

catch(CInternetException *pEx)

{

TCHAR szError[1024];

if(pEx->GetErrorMessage(szError,1024))

AfxMessageBox(szError);

else

AfxMessageBox("There was an exception");

pEx->Delete();

m_pFtpConnection=NULL;

}

}

在ftpview.cpp中的ftpview析构函数中加入下面的代码

CFtpView::~CFtpView()

{

if(m_pFtpConnection!=NULL)

{

m_pFtpConnection->Close();

delete m_pFtpConnection;

}

delete m_pInetsession;

}

编译并且执行程序,如果连接出现问题,将会在一个消息框中报告出错消息。

2.2 例二 发送文件到FTP文件服务器

创建一个发送文件到FTP文件服务器的程序

建立单文档程序ftpfw, 在ftpfwview.h中加入包含 #include < afxinet.h >

在ftpfwview.h中添加如下的成员变量

public:

bool m_bConnectionAttempted;

int m_nFileStatus;

在ftpview.cpp中的ftpview构造函数中加入下面的代码

CFtpfwView::CFtpfwView()

{

m_bConnectionAttempted=false;

}

使用ClassWizard加入新的类CFtpThread,该类派生于CWinThread 在ftpthread.h中加入如下变量

public:

static UINT PutFile(LPVOID Status);

添加新类成员函数代码

UINT CFtpThread::PutFile(LPVOID Status)

{

int *pnFileStatus;

CInternetSession *pInetsession;

CFtpConnection *pFtpConnection=NULL;

pnFileStatus=(int *)Status;

*pnFileStatus=0;

pInetsession=new CInternetsession(AfxGetAppName(),1,

PRE_CONFIG_INTERNET_ACCESS);

try

{

pFtpConnection=pInetsession->

GetFtpConnection("192.34.45.0");

}

catch(CInternetException *pEx)

{

pEx->Delete();

pFtpConnection=NULL;

*pnFileStatus=-1;

goto BallOut;

}

*pnFileStatus =1;

pFtpConnection->Remove("test.txt");

if(!pFtpConnection->PutFile

("test.txt","test.txt"))

*pnFileStatus=-2;

else

*pnFileStatus=2;

BallOut:

if(pFtpConnection!=NULL)

{

pFtpConnection->Close();

delete pFtpConnection;

}

delete pInetsession;

AfxEndThread(0);

return false;

}

编辑ftpfwview.cpp中的OnDraw()函数

void CFtpfwView::OnDraw(CDC* pDC)

{

CFtpfwDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

if(!m_bConnectAttempted)

{

m_bConnectAttempted=TRUE;

AfxBeginThread((AFX_THREADPROC)

CFtpThread::PutFile,&m_nFileStatus);

}

}

编译并且执行程序,在连接和传输的过程中,应用程序仍然可以作自己的工作,这是因为传输的过程发生在线程中。

3.封装FTPTransfer类
3.1 头文件
///////////////////////////////////////////////////////////

// FTPTransfer.h

// interface of the FTPTransfer mole

// Created on: 24-July-2010

// Original author: Andrew Zhang

///////////////////////////////////////////////////////////

#ifndef _FTPTRANSFER_H_

#define _FTPTRANSFER_H_

#include <afxinet.h> // for ftp api functions

class FTPTransfer

{

public:

FTPTransfer();

~FTPTransfer();

BOOL Login();

void Logout();

BOOL CreateRemoteDir(LPCTSTR pstrDirName);

BOOL DeleteRemoteDir(LPCTSTR pstrDirName);

BOOL Upload(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoteFile);

BOOL Download(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile);

BOOL DeleteRemoteFile(LPCTSTR pstrFileName);

BOOL UploadAll();

CString GetLastError();

protected:

private:

void Config();

CString m_csServer;

CString m_csUsername;

CString m_csPassword;

unsigned int m_nPort;

CInternetSession *m_pSession;

CFtpConnection *m_pConn;

static CString lastError;

public:

// 需要传输的文件夹

CStringArray m_astrAllDirName;

CString m_csLocalDir; // 本地图像所在路径,需要外界赋值。

};

#endif

3.2 设置配置项
可以配置服务器的IP,Port,用户名,密码等

配置项样例:

[FTPTransfer]

FTPServer = 192.168.29.253

Username = andrew

Password = zhang

Port = 21

;Ftp服务器的IP 账户 密码

3.3 使用说明
FTPTransfer transfer;

transfer.m_csLocalDir = url + strImgNo.c_str();

transfer.m_astrAllDirName.Add(csImgNo);

try

{

if (!transfer.UploadAll())

{

CString strlog(_T("[threadOperationTransfer]: "));

ServiceLog.write_log("[threadOperationTransfer]: ERROR! Upload error.");

CString csError = transfer.GetLastError();

ServiceLog.write_log((LPCWSTR)(strlog+ csError));

return -1; // FTP Error;

}

}

catch (...)

{

CString strlog(_T("[threadOperationTransfer]: "));

ServiceLog.write_log("[threadOperationTransfer]: ERROR! upload except:");

CString csError = transfer.GetLastError();

ServiceLog.write_log((LPCWSTR)(strlog+ csError));

return -1;

}

三.总结
通过以上的程序我们可以明白FTP的工作原理,因为基于应用,解释的还比较浅显。另外上传和下载需要比较久的时间,可以考虑设计多线程的方式来实现,这样不至于程序阻塞。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/loadstar_kun/archive/2010/08/06/5790288.aspx

3. C语言用Socket连接FTP服务端发送帐号的问题

敢不敢排个版

4. 高手进,关于C语言在windows上建立多线程的问题(VC6.0上实现)

东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵。

下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。
或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉。

下面是我们的代码:

/*thread_example.c : c multiple thread programming in linux
*author : falcon
*E-mail : [email protected]
*/
#include <pthread.h>
#include <stdio.h>
#include <sys/time.h>
#include <string.h>
#define MAX 10

pthread_t thread[2];
pthread_mutex_t mut;
int number="0", i;

void *thread1()
{
printf ("thread1 : I'm thread 1\n");

for (i = 0; i < MAX; i++)
{
printf("thread1 : number = %d\n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
sleep(2);
}

printf("thread1 :主函数在等我完成任务吗?\n");
pthread_exit(NULL);
}

void *thread2()
{
printf("thread2 : I'm thread 2\n");

for (i = 0; i < MAX; i++)
{
printf("thread2 : number = %d\n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
sleep(3);
}

printf("thread2 :主函数在等我完成任务吗?\n");
pthread_exit(NULL);
}

void thread_create(void)
{
int temp;
memset(&thread, 0, sizeof(thread)); //comment1
/*创建线程*/
if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) //comment2
printf("线程1创建失败!\n");
else
printf("线程1被创建\n");

if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3
printf("线程2创建失败");
else
printf("线程2被创建\n");
}

void thread_wait(void)
{
/*等待线程结束*/
if(thread[0] !=0) { //comment4
pthread_join(thread[0],NULL);
printf("线程1已经结束\n");
}
if(thread[1] !=0) { //comment5
pthread_join(thread[1],NULL);
printf("线程2已经结束\n");
}
}

int main()
{
/*用默认属性初始化互斥锁*/
pthread_mutex_init(&mut,NULL);

printf("我是主函数哦,我正在创建线程,呵呵\n");
thread_create();
printf("我是主函数哦,我正在等待线程完成任务阿,呵呵\n");
thread_wait();

return 0;
}

下面我们先来编译、执行一下

引文:

falcon@falcon:~/program/c/code/ftp$ gcc -lpthread -o thread_example thread_example.c
falcon@falcon:~/program/c/code/ftp$ ./thread_example
我是主函数哦,我正在创建线程,呵呵
线程1被创建
线程2被创建
我是主函数哦,我正在等待线程完成任务阿,呵呵
thread1 : I'm thread 1
thread1 : number = 0
thread2 : I'm thread 2
thread2 : number = 1
thread1 : number = 2
thread2 : number = 3
thread1 : number = 4
thread2 : number = 5
thread1 : number = 6
thread1 : number = 7
thread2 : number = 8
thread1 : number = 9
thread2 : number = 10
thread1 :主函数在等我完成任务吗?
线程1已经结束
thread2 :主函数在等我完成任务吗?
线程2已经结束

实例代码里头的注释应该比较清楚了吧,下面我把网路上介绍上面涉及到的几个函数和变量给引用过来。

引文:

线程相关操作

一 pthread_t

pthread_t在头文件/usr/include/bits/pthreadtypes.h中定义:
typedef unsigned long int pthread_t;
它是一个线程的标识符。

二 pthread_create

函数pthread_create用来创建一个线程,它的原型为:
extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr,
void *(*__start_routine) (void *), void *__arg));
第一个参数为指向线程标识符的指针,第二个参数用来设置线程属性,第三个参数是线程运行函数的起始地址,最后一个参数是运行函数的参数。这里,我们的函数thread不需要参数,所以最后一个参数设为空指针。第二个参数我们也设为空指针,这样将生成默认属性的线程。对线程属性的设定和修改我们将在下一节阐述。当创建线程成功时,函数返回0,若不为0则说明创建线程失败,常见的错误返回代码为EAGAIN和EINVAL。前者表示系统限制创建新的线程,例如线程数目过多了;后者表示第二个参数代表的线程属性值非法。创建线程成功后,新创建的线程则运行参数三和参数四确定的函数,原来的线程则继续运行下一行代码。

三 pthread_join pthread_exit

函数pthread_join用来等待一个线程的结束。函数原型为:
extern int pthread_join __P ((pthread_t __th, void **__thread_return));
第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。一个线程的结束有两种途径,一种是象我们上面的例子一样,函数结束了,调用它的线程也就结束了;另一种方式是通过函数pthread_exit来实现。它的函数原型为:
extern void pthread_exit __P ((void *__retval)) __attribute__ ((__noreturn__));
唯一的参数是函数的返回代码,只要pthread_join中的第二个参数thread_return不是NULL,这个值将被传递给 thread_return。最后要说明的是,一个线程不能被多个线程等待,否则第一个接收到信号的线程成功返回,其余调用pthread_join的线程则返回错误代码ESRCH。
在这一节里,我们编写了一个最简单的线程,并掌握了最常用的三个函数pthread_create,pthread_join和pthread_exit。下面,我们来了解线程的一些常用属性以及如何设置这些属性。

互斥锁相关

互斥锁用来保证一段时间内只有一个线程在执行一段代码。

一 pthread_mutex_init

函数pthread_mutex_init用来生成一个互斥锁。NULL参数表明使用默认属性。如果需要声明特定属性的互斥锁,须调用函数 pthread_mutexattr_init。函数pthread_mutexattr_setpshared和函数 pthread_mutexattr_settype用来设置互斥锁属性。前一个函数设置属性pshared,它有两个取值, PTHREAD_PROCESS_PRIVATE和PTHREAD_PROCESS_SHARED。前者用来不同进程中的线程同步,后者用于同步本进程的不同线程。在上面的例子中,我们使用的是默认属性PTHREAD_PROCESS_ PRIVATE。后者用来设置互斥锁类型,可选的类型有PTHREAD_MUTEX_NORMAL、PTHREAD_MUTEX_ERRORCHECK、 PTHREAD_MUTEX_RECURSIVE和PTHREAD _MUTEX_DEFAULT。它们分别定义了不同的上所、解锁机制,一般情况下,选用最后一个默认属性。

二 pthread_mutex_lock pthread_mutex_unlock pthread_delay_np

pthread_mutex_lock声明开始用互斥锁上锁,此后的代码直至调用pthread_mutex_unlock为止,均被上锁,即同一时间只能被一个线程调用执行。当一个线程执行到pthread_mutex_lock处时,如果该锁此时被另一个线程使用,那此线程被阻塞,即程序将等待到另一个线程释放此互斥锁。

注意:

1 需要说明的是,上面的两处sleep不光是为了演示的需要,也是为了让线程睡眠一段时间,让线程释放互斥锁,等待另一个线程使用此锁。下面的参考资料1里头说明了该问题。但是在linux下好像没有pthread_delay_np那个函数(我试了一下,提示没有定义该函数的引用),所以我用了sleep来代替,不过参考资料2中给出另一种方法,好像是通过pthread_cond_timedwait来代替,里头给出了一种实现的办法。

2 请千万要注意里头的注释comment1-5,那是我花了几个小时才找出的问题所在。
如果没有comment1和comment4,comment5,将导致在pthread_join的时候出现段错误,另外,上面的comment2和comment3是根源所在,所以千万要记得写全代码。因为上面的线程可能没有创建成功,导致下面不可能等到那个线程结束,而在用pthread_join的时候出现段错误(访问了未知的内存区)。另外,在使用memset的时候,需要包含string.h头文件哦

5. 各位大哥,小弟想请问下C/C++服务器端编程是做什么的。需要学些什么。麻烦详细一点。谢谢

C/C++的服务器端,比如我们经常玩的网游,那个服务器端大部分都是C/C++编程的。还有本地连接,网上邻居,ftp协议之类的,基本上windows的客户端网络服务都有对应的服务器。
当然要学习C/C++服务器编程,涉及的方面就比较多了,重要的有网络连接,多线程,数据存储等等的。
你可以参考一下腾讯在C/C++服务器编程工程师的要求。
工作要求:
工作有激情, 认真负责,尽职尽责,沟通协作意识良好,能够承担工作压力,具备良好的学习能力和分析解决问题能力;
全面的软件知识结构(操作系统、数据结构、数据库系统、网络安全),有两年以上互联网应用开发经验,有无线互联网后台开发经验优先;
熟练使用C/C++语言,熟悉Linux下调试、开发环境,对多线程、缓存系统、高性能、高可用系统有经验者优先;
熟悉TCP/IP协议,能熟练使用网络分析工具分析网络相关的故障,有一定的网络编程经验;
熟悉数据库的设计、使用与基本调优,熟练使用mysql数据库进行业务开发;
熟悉Linux,具备Linux下的系统开发经验;
具备大并发、分布式存储、大容量系统开发运营经验优先。

6. FTP自动上传文件成功后删除原文件。

完全可以的,我用的是FLASHFXP的FTP上传下载软件.

每次不正常退出,他都可以保存你上的的任务.

重新打开后,就提示载入上次失败的任务.

软件下载地址:
http://www.stasp.com/down/open.asp?id=38

7. 请介绍最优秀,用的人最多的FTP下载工具~~~~~

Cute-FTP可以的

教程如下
1、什么是ftp
ftp是英文file transfer protocol(文件传输协议)的缩写。顾名思义,ftp就是专门用来传输文件的协议。工欲善其事,必先利其器。常在网上走,哪能不用ftp。有了ftp,你就可以迅速得到时髦的软件、游戏、在微软发布的当天使用上ie5、或者给你的主板显卡下载最新的驱动程序、给你的杀毒软件加载最新的病毒数据库……好处说也说不完。

2、常用的ftp软件
在很久很久以前的unix的系统上的ftp程序是基于命令行的,有点象dos的模样。现在的window95 /98/nt仍然有基于命令行的字符界面的ftp程序,供骨灰级的网虫练习他们的指法。命令行的ftp使用起来自然不方便,首先要掌握几十条命令不说,字符的屏幕上通常只能显示25或50行,如果文件的列表是一长串,没办法,你只能看到最后面的一些了。类似于windows的图形界面流行开之后,自然就有了图形界面的ftp程序。ws_ftp是其中资格比较老的一个,cuteftp相对年轻一些,而后来的bullet proof、leaf ftp、crysta l就属于比较前卫的了。另外,大部分浏览器,如ie、netscape也支持ftp协议。不过浏览器的ftp功能只是用来作为www的辅助,只能完成基本的操作,不够专业。我们这里来介绍ftp程序的优秀软件——cute ftp。

3、认识Cute-FTP软件
首先,我们要安装CuteFTP,我这里用的是它的最新版CuteFTP 4.2,大家如果找不到这个版本,可以试着从CuteFTP的官方站点下载,或使用以前的版本,也没什么问题,操作都是类似的。按照软件提示一步步的安装,在安装中软件会提示您是否安装CuteHTML,您可以依照爱好选择,CuteHTML是一款类似Ultra Edit的文本编辑器(见图1)。
开启CuteFTP后,软件会先弹出一个类似帮助的Tip of the day文本对话框,如果你是第一次使用可以先按照提示看看(见图2)。

图1

图2

关掉Tip of the day后,会出现一个对话框,写着Site Manager, 里面会附上一些英文站点的资料,您可以自行加入常用的FTP站点地址。本文稍后介绍,按Exit关掉Site Manager(见图3)。

图3

关掉Site Manager后显示的是CuteFTP的工作视窗,共分四个区域,下面简单介绍一下它们:
上部区域:这里是FTP站点所显示的信息区,可以由这里知道目前连接的情形,例如该站给使用者的欢迎或者提示信息、是否支持断点续传、正在下载哪个文件、是否已经连接……。
下部左区域:这里显示的是你的硬盘要上传(Upload)及要下载(Download)的所在目录,未设定前默认显示的是CuteFTP的安装目录(如C:\Programs Files\GlobalSCAPE\cuteFTP)。当然,如果我们不想把下载下来的文件都放在这里(我们建议您明确分类、存放下载文件,不然以后对于数据备份和查找就变成一件非常困难的事情),可以指定路径存放,稍候在下载中再说。
下部右区域:在这里显示的是FTP站点里面的目录和文件(比如文件名,大小,属性等我们都可以非常清楚的看见)。
底部区域:可以创建排程,一次准备好要上传或者下载的文件,减免上传下载过程中所造成的时间浪费(见图4)。

图4

4、使用Cute-FTP软件
好,熟悉完视窗,我们现在就把做好的网站传到网络的服务器上。
首先要确定你是否拥有可以上传的FTP服务器,在网上有许多能够提供FTP上传维护功能的免费个人主页站点,你要是没有的话,可以申请一个(未避广告嫌疑,我就不推荐了)。或是你花钱租用一个。你会得到相映的地址、名字、口令等参数,其次要保证你现在在线。(这就不用教了吧?)
先教你一个快速连接的方法,在工作视窗的顶部,有一个黄色的闪电标志(Quick Connect),按下它,会弹出一个浮动菜单,里面有URL、User、Name、Password、Port等几项设置。在这里你可以填上你所要上传的地址、用户名及密码(见图5)。

图5

填好后,按一下右侧的闪电标志(Connect),就会在FTP站所显示的信息区里看见连接情况。
连接成功后,你会在下部右区域看见FTP站点里面的目录和文件。如图6所示,在我所登录的站点里,分为三个文件夹和若干文件。

图6

这时我打开下部左区域的路径菜单,找到本地硬盘上要上传的文件夹或文件,选中它们后用鼠标拖到服务器上相应的目录下(也可以使用工具栏上的相应快捷按钮),或者新建一个文件夹(只要你权限够大)(见图7)。

图7

Cute-FTP工具软件的使用(二)

1、设置Cute-FTP
启动Cute-FTP软件后,首先出现的是“FTP Site Manager”窗口,我们需要在这个窗口中进行必要的设置后才能进入系统主窗口来执行文件的上传和下载。如图8所示,将鼠标移到‘FTP sites’的地方,然后我们按下它下面的那一排按钮中的‘Add sites’,告诉电脑我们要新增一个主机站(这个站就是我们要将网页上传的地方),如图9所示:

图8
图9

按下‘Add sites’之后,我们便会 看到一个设置窗口,这个窗口主要是要让我们来设置我们要上传主机的详细资料,就以本站的例子来说好了,如图10所示:

图10

标号 1:这一格只是让你替服务器(就是你要放上网页的电脑主机啦!)取个名称罢了,随您怎么填都可以,像工友就自行取为‘首页制作百宝箱’,下次再进入CuteFTP时,就直接选取‘首页制作百宝箱’就可以直接连到该网页服务器器,直不需要再输入一堆繁杂的设置了。
标号 2:这一格非常重要,须填上服务器的所在位置,在这里,我们所用的服务器地址是‘202.192.175.19’。或许有人会问,那我到底要填上什么呢?这...我也不知道,我怎么会知道您网页放在哪呢?如果您是线上申请的免费网址,那么该网站应该都会告诉您要上传到哪里 (也就是一连串的主机位置),不然,就问问让您放网页的服务器管理员吧!对了!在填的时候千万别加上ftp://..... or http://.....这些都是无法执行的。
标号 3:通常连通主机后,服务器会询问您的帐号,这一格就填上您进入服务器的用户号即可。
标号 4:检查完帐号后就会要求输入密码,这一格就是要您填密码啦!注意喔!这里所谓的帐号密码是指‘进入该服务器的帐号密码’而非,您拨接上网的帐号密码,通常服务器管理员都会通知您帐号密码是多少,要不然就是当初您在申请免费网址时自行设置的那一组帐号密码就是了。
标号 5:进入服务器方式设置,通常是‘Normal’,也就是说需要帐号密码才进得去,如果选第二项就表示任何人都可以进去,那事情就大条啦!
标号 6:文件上传模式设置,选第三项‘Auto-Detect’比较方便,它会自行探测文件类型做出最适合的上传方式。
标号 7:嗯...这格我就较不了解 了...反正选‘Auto-Detect’这一项准没错。
标号 8:设置服务器端的路径,设不设都无所谓啦!有设的话,以后再进入时,就不用切换一堆路径,而可以直达你要上传的目录。所以要设置的话,先决条件是,您要知道您放网页的路径及目录。
标号 9:设置自己电脑的内部目录,像我就设置C:www,它只要一连通服务器,便会自行切换到C:www这目录,工友就可以不用在那里找目录而可以省下一些时间。
OK!设好按下确定之后,你应该可以看见刚刚设置的服务器名称出现在右上的窗口中,如图11所示,而它的下方会显现其网络位置如图12:

图11

图12

图13

看到之后便表示您设置成功了(但不代表你设置的值是正确的,要连得通才算数),下次再执行CuteFTP时,就可以直接选这里来进入了,这样就不用再进行繁复的设置了。
最后一个步骤,按下‘Connect’连接(如图13),就行啦!接下来就是期待接通了!

2、连接服务器
接下来映入眼的就是整个CuteFTP的使用界面,上面是工具列,工具列下方是状态列,左下是自己电脑的目录,右下是服务器的目录。现在就先说说工具列:

这是左半段图标,其中顺数第二个为连接按钮。
这是右半段图标,其中顺数第三个和第四个即为下载和上传按钮。

整个画面看起来如图14:

图14

OK!进入最重要的主题:‘如何上传文件’??
首先,先确定已经连通服务器,这只要看看状态列就知道了,如上图的状态列所示,就是连通后的样子。
切换到适当目录。先看看左半区域窗口,这就是自己电脑的目录。例如你的所有网页文件都放在C:\WWW的目录下,所以,先要切换到C:\WWW目录中。
右半区域窗口中是你存放网页在服务器上的目录位置,例如你的网站是放在服务器的 newhd/home/tad/public_html/中,所以就在右半区域窗口中切换到你存放网页的目录。做完这两个动作,上传大业已经完成大半了!
接下来,回到左下窗口选取欲上传的文件(按住Shift键再选取文件可以连续选取多个文件,按住Ctrl键再选取文件可以选取多个不连续文件),选取完后,按下工具列的‘往上’键,就可以啦!如图15:
ftp软件有很多种,使用方法大同小异。同时,他还有下载的功能,你 可以利用这一点从服务器上下载软件,速度比其他方法快多了

另外请大家千万注意,如果需要编辑修改你的文件,你必须先将其下载到本地硬盘上才可进行修改,在服务器上是不能直接进行修改的。

3、评价
采用这种方法来登录FTP服务器,需要在客户端中安装相应的工具软件,Cute-FTP软件是一个老牌经典的FTP软件。
●使用方便,性能稳定,安全性好;
●上传和下载的速度比较快;
●支持断点续传,支持多线程工作;
●允许对整个目录的覆盖和删除,支持文件队列管理;
等等……

8. FTP上传文件错误

150 opening ascii mode data connection for /bin/ls.
426 data connection closed, transfer aborted.

这种情况可能是你所在网络安装了防火墙(或代理),该防火墙(或代理)禁止来自远程的连接,426 data connection closed, transfer aborted表明了这一点。这时候你可以使用被动传输模式(pasv模式),来避免该限制,进行数据传输.
解决办法是在该ftp标签的站点设置中,设置为被动模式pasv模式.同样,如果前面有网友出现200 port command successful.
连不上的情况,也用上面方法

1.
connected. waiting for response.
220 serv-u ftp server v4.0 for winsock ready...
user anonymous
530 sorry, no anonymous access allowed.
quit
不允许匿名登录

2.

connected. waiting for response.
220 serv-u ftp server v4.0 for winsock ready...
user test
331 user name okay, need password.
pass xxxxxx
530 not logged in.
quit
一般是密码输入错误时出现的信息。密码不对哟!

3.
connecting to xxx.xxx.xxx.xxx, port 21 (#1)
error: connection timed out

这个表明对方未开机,也可能是对方不在你能访问的范围内。可能小区的服务器检修中。

4.

connecting to xxx.xxx.xxx.xxx port 21 (#1)
error: connection refused
这个一般表明对方已开机,但未开启ftp服务(没有开serv-u)
也可能为对方不提供在这个端口上的服务

5.

connecting to xxx.xxx.xxx.xxx, port 21 (#1)
connected. waiting for response.
disconnected from server.
connection attempt failed. waiting for retry...
出现这个信息实在是很倒霉,你极有可能把重试时间定的太短服务器封了你哟!

6.
connecting to xxx.xxx.xxx.xxx, port 21 (#1)
connected. waiting for response.
user xxx
331 user name okay, need password
pass xxxxxx
530 not logged in, unauthorized ip address.
quit
没有登记ip!或者登记的ip和你现在下载的不一样!赶快重新登记吧!

7.
227 entering passive mode (218,3,87,224,10,232)
retr hfdx-tsoaf.sub.rar
550 sorry, insufficient credit for download - upload first.
传输已失败!
传输队列已完成
你的流量不够了,重新购买吧!

8.
connected. waiting for response.
220 serv-u ftp server v4.0 for winsock ready...
user user
421 too many users - please try again later.
说明当前你所属的下载组的下载人数已到上限,请过些时候再尝试,用Flashget等的下载工具不断尝试联接的人请讲尝试时间调大一点,否则会被服务器封闭一段时间的IP

9.
150 opening ascii mode data connection for /bin/ls.
426 data connection closed, transfer aborted.

这种情况可能是你所在网络安装了防火墙(或代理),该防火墙(或代理)禁止来自远程的连接,426 data connection closed, transfer aborted表明了这一点。这时候你可以使用被动传输模式(pasv模式),来避免该限制,进行数据传输.
解决办法是在该ftp标签的站点设置中,设置为被动模式pasv模式.同样,如果前面有网友出现200 port command successful.
连不上的情况,也用上面方法

Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
ERROR: Connection timed out
这个表明对方未开机,也可能是对方不在你能访问的范围内
-----------------------------------
Connecting to xxx.xxx.xxx.xxx Port 21 (#1)
ERROR: Connection refused
这个一般表明对方已开机,但未开启FTP服务(没有开Serv-U)
也可能为对方不提供在这个端口上的服务
-----------------------------------
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
Disconnected from server.
Connection attempt failed. Waiting for retry...
出现这个信息实在是很倒霉,你极有可能被对方Ban了。
如果只是Ban几分钟or几小时or一天还好,不然只有和站长说说好话,让他给你解封吧。

-----------------------------------
110 Restart marker reply. In this case, the text is exact and not left to
the particular implementation; it must read: MARK yyyy = mmmm where yyyy is
User-process data stream marker, and mmmm server s equivalent marker (note
the spaces between markers and "=").
重新启动标志回应。这种情况下,信息是精确的并且不用特别的处理;可以这样看:标记 yyyy = mmm 中 yyyy是 用户进程数据流标记,mmmm是服务器端相应的标记(注意在标记和等号间的空格)
-----------------------------------
120 Service ready in nnn minutes.
服务在NNN时间内可用
-----------------------------------
125 Data connection already open; transfer starting.
数据连接已经打开,开始传送数据.
-----------------------------------
150 File status okay; about to open data connection.
文件状态正确,正在打开数据连接.
-----------------------------------
200 Command okay.
命令执行正常结束.
-----------------------------------
202 Command not implemented, superfluous at this site.
命令未被执行,此站点不支持此命令.
-----------------------------------
211 System status, or system help reply.
系统状态或系统帮助信息回应.
-----------------------------------
212 Directory status.
目录状态信息.
-----------------------------------
213 File status.
文件状态信息.
-----------------------------------
214 Help message.On how to use the server or the meaning of a particular
non-standard command. This reply is useful only to the human user. 帮助信息。
关于如何使用本服务器或特殊的非标准命令。此回复只对人有用。
-----------------------------------
215 NAME system type. Where NAME is an official system name from the list
in the Assigned Numbers document.
NAME系统类型。
-----------------------------------
220 Service ready for new user.
新连接的用户的服务已就绪
-----------------------------------
221 Service closing control connection.
控制连接关闭
-----------------------------------
225 Data connection open; no transfer in progress.
数据连接已打开,没有进行中的数据传送
-----------------------------------
226 Closing data connection. Requested file action successful (for example,
file transfer or file abort).
正在关闭数据连接。请求文件动作成功结束(例如,文件传送或终止)
-----------------------------------
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
进入被动模式
-----------------------------------
230 User logged in, proceed. Logged out if appropriate.
用户已登入。 如果不需要可以登出。
-----------------------------------
250 Requested file action okay, completed.
被请求文件操作成功完成
-----------------------------------
257 "PATHNAME" created.
路径已建立
-----------------------------------
331 User name okay, need password.
用户名存在,需要输入密码
-----------------------------------
332 Need account for login.
需要登陆的账户
-----------------------------------
350 Requested file action pending further information
对被请求文件的操作需要进一步更多的信息
-----------------------------------
421 Service not available, closing control connection.This may be a reply
to any command if the service knows it must shut down.
服务不可用,控制连接关闭。这可能是对任何命令的回应,如果服务认为它必须关闭
421 Too many users - please try again later.
太多用户,那就过会再连
-----------------------------------
425 Can t open data connection.
打开数据连接失败
-----------------------------------
426 Connection closed; transfer aborted.
连接关闭,传送中止。
-----------------------------------
450 Requested file action not taken.
对被请求文件的操作未被执行
-----------------------------------
451 Requested action aborted. Local error in processing.
请求的操作中止。处理中发生本地错误。
-----------------------------------
452 Requested action not taken. Insufficient storage space in system.File
unavailable (e.g., file busy).
请求的操作没有被执行。 系统存储空间不足。 文件不可用
-----------------------------------
500 Syntax error, command unrecognized. This may include errors such as
command line too long.
语法错误,不可识别的命令。 这可能是命令行过长。
-----------------------------------
501 Syntax error in parameters or arguments.
参数错误导致的语法错误
-----------------------------------
502 Command not implemented.
命令未被执行
-----------------------------------
503 Bad sequence of commands.
命令的次序错误。
-----------------------------------
504 Command not implemented for that parameter.
由于参数错误,命令未被执行
-----------------------------------
530 Not logged in.
一般来说是密码错误。
530 Sorry, no ANONYMOUS access allowed.
这个就是不许匿名登录
530 Not logged in, unauthorized IP address
这个有点麻烦,你的IP不在站长允许访问的IP范围内,只有和站长联系,让他把你的IP网段加入Allow Access列表里吧
530 Not logged in, only one(也有可能是two or three) session from same IP allowed at a time.
每个IP只能开一个(也有可能是two or three) 下载,就不要用多线程啦,小心Ban了你。
-----------------------------------
532 Need account for storing files.
存储文件需要账户信息
-----------------------------------
550 Requested action not taken. File unavailable (e.g., file not found, no
access).
请求操作未被执行,文件不可用。
-----------------------------------
551 Requested action aborted. Page type unknown.
请求操作中止,页面类型未知
-----------------------------------
552 Requested file action aborted. Exceeded storage allocation (for current
directory or dataset).
对请求文件的操作中止。 超出存储分配
-----------------------------------
553 Requested action not taken. File name not allowed
请求操作未被执行。 文件名不允许
-----------------------------------
这种错误跟http协议类似,大致是:
2开头--成功
3开头--权限问题
4开头--文件问题
5开头--服务器问题

9. 怎么样建立FTP

建立个人FTP服务器教程 以及 内网、局域网设置IP,建立FTP

【怎样建立个人FTP】

Serv-U FTP Server 5.0.0.11 final 特别破解版汉化版
点击下载

好了,说了这么多,还没到关键部分-如何自己来建立FTP服务器。下面我就一步一步来说明。
一、 安装原版软件和汉化补丁,这个过程就不多说了,想必没人不会的。
二、 建立第一个本地FTP服务器
安装完成后程序会自动运行,你也可以在菜单中选择运行。
1、 第一次运行程序,它会弹出设置向导窗口如图,

将会带你完成最初的设置,
2、 单击“下一步”,出现“显示菜单图像”的窗口,问你是否在菜单中显示小图像,看各人喜欢了;
3、 单击“下一步”,这个窗口是让你在本地第一次运行FTP服务器,只要“下一步”就行了。
4、 接下来要你输入你的IP地址如图,

如果你自己有服务器,有固定的IP,那就请输入IP地址,如果你只是在自己电脑上建立FTP,而且又是拨号用户,有的只是动态IP,没有固定IP,那这一步就省了,什么也不要填,Serv-U 会自动确定你的IP地址,“下一步”;
5、 在这儿要你输入你的域名,如图

如果你有的话,如:ftp.abc.com,没有的话,就随便填一个;
6、 “下一步”,询问你是否允许匿名访问如图

一般说来,匿名访问是以Anonymous为用户名称登录的,无需密码,当然如果你想成立一个会员区什么的,就应该选择“否”,不让随便什么人都可以登录,只有许可用户才行,在此我们填“是”;
7、 “下一步”,问你匿名用户登录到你的电脑时的目录,如图,

你可以自己指定一个硬盘上已存在的目录,如F:\temp\xyz;
8、 “下一步”,询问你是否要锁定该目录,锁定后,匿名登录的用户将只能认为你所指定的目录(F:\temp\xyz)是根目录,也就是说他只能访问这个目录下的文件和文件夹,这个目录之外就不能访问,对于匿名用户一般填“是”;
9、 “下一步”,询问你是否创建命名的帐号,也就是说可以指定用户以特定的帐号访问你的FTP,这对于办会员区可很有用哦,你可以对于每个人都创建一个帐号,每个帐号的权限不同,就可以不同程序地限制每个人的权利,方法将在后面讲到,这里选择“是”;
10、 “下一步”,请你填入所要建立的帐号的名称,如图,如:ldr,

11、 “下一步”,请输入密码,如:123,
12、 “下一步”,询问登录目录是什么,这一步与第7步一样,如:F:\temp
13、 “下一步”,询问你是否要锁定该目录,同第8步,这里选择“否”;
14、 接下来询问你这次创建的用户的管理员权限,如图,

有几项选择:无权限,组管理员,域管理员,只读管理员和系统管理员,每项的权限各不相同;这里选择“系统管理员”;
15、 最后一步,点击“完成”就OK了,你有什么需要修改的,可以点“上一步”,或者进入Serv-U管理员直接修改。至此,我们建立
了一个域ftp.abc.com,两个用户,一个Anonymous,一个ldr。

三、 既然我们已经建立好FTP服务器,那么我们就应该可以用FTP客户端软件来尝试登录。
怎么办呢?其实很简单,我们不用上网,就可以测试。我们知道,不上网时,本地机的IP地址默认就为127.0.0.1,FTP端口号为21。打开FTP客户端软件,我就用FlashFXP来说明,打开快速连接,填入相应内容,如图

然后连接,如图

可以看到,我左边窗格以Anonymous登录,右边窗格以ldr登录,由于是本地机,所以速度奇快,上网后,假如我要让你登录到我的电脑上,我只要把我的上网时的IP地址给你,你就可以匿名访问我的电脑了(注意不要开防火墙),是不是很方便?

四、Serv-U管理员中的各项设置
在设置完成后,将会进入Serv-U管理员的主界面,如图

左边窗格中显示各个栏目,右边窗格中显示各个栏目的具体选项,下面就大概讲一讲设置内容。
1、 在图中,我们可以人为地控制Serv-U引擎的运行或停止,记住,在Win 9x/Me 中,我们就要在此选择“系统服务”,才会运行
Serv-U引擎。
2、 “许可”,如果你花美元买了注册号,就可以在此输入。
3、 “设置”,这个设置是对于“本地服务器”来说的。“常规”设置中,如图

可以限制服务器的最大速度,可以拦截FXP(站点到站点传送),也可以限制用户的数量,这样不至于你的服务器被拖跨。“目录缓存”设置中,如图

允许你自己确定目录列表的个数以及超时时间,在Windows 95 和 NT下,目录列表默认设置为25,当缓存满了之后,新的请求将替换老的请求。“高级”设置中,如图

可以让你自己定义服务器、Socket、文件的上传和下载的各项设置。
4、 “活动”,在这里记录了用户的活动日志,已封锁的IP的活动日志,以及任务日志;任务日志中显示的就是你开始停止的各项操作记录,你可以点击右击,选择一此过滤文本,使其只显示你所想见的内容,如图

5、 “域”,这里包含了你一开始根据向导所建立的用户、设置、域等。“域--设置”中所设置的内容其实与第3步差不多,只是它更
加具体,可以对于每一个不同域定制。“域--活动”中记载了这个域下所有用户的活动情况。
6、 “域--组”,我们可以自己建立一些便于管理的组,然后把一类的用户归到一个组中。
7、 “域--用户”中,大家可以看到一开始我们建立的两个帐号,一个Anonymous,一个ldr。现在就帐号ldr来对其中的细节设置说明一下。
A、“帐号”栏,如图

对于一些不守规则的人,我们可以选择“禁用帐号”,虽然有帐号,但可以使用户一时间无法登录;你也可以设置让程序到达某个日期后自动删除某个帐号;下面几栏是这个帐号的基本信息,我们都可以在此更改,其中密码改过后并不显示,而是统一显示<>,特别要注意选项“锁定用户于主目录”,什么意思呢?大家应该碰到,每次我们登录到FTP服务器上后,在根目录下只显示“/”,选择这项选项后,就是这样,如果不选,会出现什么情况呢?你可以做一下试验,在根目录下将显示“/f:/temp/”,也就是说显示了你硬盘中的绝对
地址,这在某些情况下是很危险的,有不怀好意的高手,你就麻烦了!

你可以隐藏属性为隐藏的文件,可以限制同一IP的登录个数,是否允许用户更改密码(这需要客户端软件的支持),最大上传下载的速
度,超时时间以及空闲时间,你也可以限制最大用户数量,如20,说明同时只能有20个用户登录。
C、“目录访问”栏,如图

在此你可以控制用户对于文件目录的权限,对文件有读取、写入、删除、追加、执行等操作,对于文件夹有列表、创建、删除,以及是否继承子目录;如果觉得目录不够,你也可以添加可访问的目录。
D、“IP访问”栏,如图

在这里你可以规定某个IP是否可以访问你的FTP服务器,你可以拒绝它的访问,只要填上相应的IP地址,以后由这个IP的访问通通被拦下。
E、“上传/下载率”栏,如图

在这里你可以设置上传和下载之间的比值,控制好上传和下载之间的数据流量关系。
F、“配额”栏,如图

这里你可以为每个FTP用户设置磁盘空间,点击“计算当前”,可以知道当前目前下的所有空间大小,在“最大”一栏中填入你想要限制的容量。

最后有一点,改过设置后一定要点击右键,选择“应用”使设置生效才行,否则一切都白做了!!
希望大家学会后,能为更多的人提供下载,享受宽带带来的快乐!

==========================================================================================================

SERV-U FTP的欢迎词设置
让你的SERV-U FTP看起来更专业一点
现在很多的朋友都用SERV-U做个人FTP的服务器,有关如何使用SERV-U架设服务器的文章很多了,这儿我就不多说了。不过大家不知道注意到了没有,当你登陆很多FTP的时候,会显示一些欢迎信息,比如说显示你的IP,告诉你目前有多少人在使用FTP,带宽是多少等等。。。看起来就比较的专业样子。其实你自己也是可以做的,SERV-U这个软件本身就有这个功能。下面我就说明以下如何在自己的FTP里面加上这些信息。

第一、先建立一个文本文件,随便取一个名字。我们这儿就取message.txt吧。

第二、这个这个文本文件里面加上这些文字

-----------------------------------
欢迎来到XXX的个人FTP服务器
你的IP地址是:%IP
目前服务器所在的时间是 %time
已经有 %u24h 个用户在最近24小时访问过本FTP
本FTP服务器已经运行了 %ServerDays 天,%ServerHours 小时 和 %ServerMins 分。

服务器的运行情况:

所有登陆用户数量: %loggedInAll total
当前登陆用户数量: %Unow
已经下载字节数: %ServerKbDown Kb
已经上传字节数: %ServerKbUp Kb
已经下载文件数: %ServerFilesDown
已经上传文件数: %ServerFilesUp
服务器平均带宽: %ServerAvg Kb/sec
服务器当前带宽: %ServerKBps Kb/sec
------------------------------------

其中XXX可以改成你的名字

你也可以加上一些你自己认为喜欢的文字,不过要注意的是每行最好不要超过80个字符

其中以%开头的都是一些变量,下面是SERV-U能支持的变量

时间和日期

%Time - 显示你的计算机当前时间
%Date - 显示你的计算机当前日期

服务器的统计信息

%ServerDays - 显示服务器已经运行的天数
%ServerHours - 显示服务器已经运行的小时数
%ServerMins - 显示服务器已经运行的分钟数
%ServerSecs - 显示服务器已经运行的秒数
%ServerKbUp - 显示自从服务器运行以来已经上传的字节数
%ServerKbDown - 显示自从服务器运行以来已经下载的字节数
%ServerFilesUp - 显示自从服务器运行以来已经上传的文件数
%ServerFilesDown - 显示自从服务器运行以来已经下载的文件数
%LoggedInAll - 显示自从服务器运行以来已经登陆的用户数
%ServerAvg - 显示服务器的平均带宽
%ServerKBps - 显示服务器的当前带宽

服务器的设定信息

%MaxUsers - 显示服务器能同时登陆的最大用户数量
%MaxAnonymous - 显示服务器能同时登陆的最大匿名用户数量

用户信息

%Name - 显示登陆的用户名
%IP - 显示登陆的用户IP地址
%Dir - 显示登陆的用户的当前目录
%Disk - 显示登陆的用户的当前磁盘
%DFree - 显示登陆的用户的当前磁盘空间,单位是MB
%FUp - 显示登陆的用户上传的文件数量
%FDown - 显示登陆的用户下载的文件数量
%FTot - 显示登陆的用户上传和下载的总的文件数量
%BUp - 显示登陆的用户上传的字节数,单位是KB
%Bdown - 显示登陆的用户下载的字节数,单位是KB
%BTot - 显示登陆的用户上传和下载的总字节数,单位是KB
%TconM - 显示登陆用户连接时间,单位是分钟
%TconS - 显示登陆用户连接时间,单位是秒,要和%TconM一起使用
%RatioUp - 显示登陆用户的上传流量限制
%RatioDown - 显示登陆用户的下载流量限制
%RatioCredit - 显示登陆用户还有多少credit可以上传和下载,这个是针对有些FTP是要上传多少文件,才能下载多少文件而设置的
%QuotaUsed - 显示登陆用户的已经使用了多少空间,单位是KB
%QuotaLeft - 显示登陆用户的还有多少空间可以使用,单位是KB
%QuotaMax - 显示登陆用户的的最大空间,单位是KB
后面3个是针对有磁盘限制的用户设置的

用户数量

%UNow - 显示当前有多少用户连接
%UAll - 显示从服务器运行以来一共有多少用户连接过
%U24h - 显示最近24小时有多少用户
%UAnonAll - 显示当前总的匿名用户数量
%UAnonThisIP - 显示所有匿名登陆的用户数
%UNonAnonAll - 显示所有当前非匿名登陆用户数
%UNonAnonThisIP - 显示所有非匿名登陆用户数
%UThisName - 显示所有使用这个名字登陆的用户数

自己在先建立一个.txt文件,输入你想要显示的文字,具体参数看上面的内容,然后在Serv_u内的server设置里面,加入这个.txt文件就可以了

==========================================================================================================

——常见FTP登陆Log信息——
常见FTP登陆Log信息

1.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER anonymous
530 Sorry, no ANONYMOUS access allowed.
QUIT
这个就是不许匿名登录啦

2.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
331 User name okay, need password.
PASS xxxxxx
530 Not logged in.
QUIT
一般是密码输入错误时出现的信息,但对于Serv-U来说,如果没有这个帐号(test)存在,也会产生同样的出错信息。

3.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
ERROR: Connection timed out
这个表明对方未开机,也可能是对方不在你能访问的范围内

4.
Connecting to xxx.xxx.xxx.xxx Port 21 (#1)
ERROR: Connection refused
这个一般表明对方已开机,但未开启FTP服务(没有开Serv-U)
也可能为对方不提供在这个端口上的服务

5.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
Disconnected from server.
Connection attempt failed. Waiting for retry...
出现这个信息实在是很倒霉,你极有可能被对方Ban了。
如果只是Ban几分钟or几小时or一天还好,不然只有和站长说说好话,让他给你解封吧。

6.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
USER XXX
331 User name okay, need password
PASS xxxxxx
530 Not logged in, unauthorized IP address.
QUIT
这个有点麻烦,你的IP不在站长允许访问的IP范围内,只有和站长联系,让他把你的IP网段加入Allow Access列表里吧

7.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER user
421 Too many users - please try again later.
哈哈,这个很常见吧,用户太多

8.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
530 Not logged in, only one session from same IP allowed at a time.
QUIT
每个IP只能开一个下载,就不要用多线程啦,小心Ban了你。

----------------------------------------------------------------------------------------------

内网、局域网如何设置IP,建立FTP
首先,我们知道动态IP机器出去的最大问题是IP,因为动态IP机器的IP外网是无法识别的,我们讨论的是最普通的局域网内工作站出去做FTP和WEB站点的问题!
动态域名解析正好能够解决此类问题,它的原理是将本机的动态IP自动映射到预先申请好的虚拟域名上,这样外面就可以通过访问固定的虚拟域名来访问到动态IP机器了。
<花生壳>该软件使用方便,几乎不用动什么脑筋,唯一要做的事情就是去注册,然后申请一个以vicp.net为后缀虚拟域名。
1.进入http://www.oray.net/,下载<花生壳>,并“注册网域护照”!
2.注册完成后,登陆“我的控制台”

3.进入“我的控制台”,点击左下角的‘我要.激活花生壳服务’

4.点击“开始”进入

在‘免费域名’填入不重复的你想要得名字就是你将来的域名,例如:AGHU

5.以后就是“服务条款”和“填写站点信息”,这些地球人都知道怎么填!
填完结束,恭喜你,你的域名已经有了!例如:你以后的域名就是AGHU.VICP.NET
申请完免费域名以后,就安装你已经下载的<花生壳>,然后打开运行

输入你的注册名和密码,等一下就会激活你的域名,兴奋吧!
然后你的ftp和web就可以启动咯!
架设ftp服务器的事情,另外有帖子详细介绍了!!
======================================
局域网内公开的ip只有一个,除非你是在主机上建私服,否则你无法公开你的私服,只能在局域网内,解决的办法如下。
由于公网ip地址有限,不少isp都采用多个内网用户通过代理和网关路由共用一个公网ip上internet的方法,这样就限制了这些用户在自己计算机上架设个人网站。要实现对我们来说是比较困难的,首先得得到系统管理员的支持才能够实现。因为这一切的设置必须在代理服务器上做的。要实现这一点,可以用windows 2000 服务者 的端口映射功能,除此之外winroute pro也具有这样的功能,还有各种企业级的防火墙。而对于我们这些普通用户,恐怕还是用windows 2000 的转换以解决ip地址匮乏问题。在防火墙上实现nat后,可以隐藏受保护网络的内部拓扑结构,在一定程度上提高网络的安全性。如果反向nat提供动态网络地址及端口转换功能,还可以实现负载均衡等功能端口映射功能可以让内部网络中某台机器对外部提供www服务。 端口映射功能还可以完成一些特定代理功能,比如代理pop,smtp,telnet等协议。理论上可以提供六万多个端口的映射,恐怕我们永远都用不完的。

一、下面来介绍一下通过nat共享上网和利用nat来实现端口映射。

1、在windows 2000 server上,从管理工具中进入“路由和远程访问”(routing 并且 遥远 access)服务,在服务器上鼠标右击,-》“配置并启用路由和远程访问”

2、点“下一步”

3、选“internet连接服务器”,让内网主机可以通过这台服务器访问internet.(最好先配置好nat共享,让内网主机可以正常上网,不然的话,配好端口映射后再来配置nat共享就有点麻烦了,弄的不好nat还共享不了。)

4、选“设置有网络地址转换(nat)路由协议的路由器”,不要选“设置internet连接共享(ics)”.(ics与nat的区别在于使用的容易程度上,为了启用ics,只需要选择一个复选框就可以了,而为了启用nat,则需要更多的配置任务,此外,ics用于小型网络上的原因还在于:针对内部主机,它需要有一个固定的ip地址范围;针对与外部网络的通信,它被限制在单个公共ip地址上;它只允许单个内部网络接口。)

5、先在此说一下我的网络情况:internet连接192.200.200.3(也是个内部地址,没办法,铁通的网络不太好,网速不快,价钱又贵,我的命真苦啊)宿舍内连接192.168.0.1(宿舍里连有局域网,共4台电脑,其中一台上装了sambar 5.1b5做的web服务器,web端口是80,待会就从外网(用192.200.200.55来替代)来访问这个192.168.0.2:80上的网页)这台nat主机上开通了iis5.0,端口是80,用端口映射的办法把8081端口映射到内部主机192.168.0.2的80端口上。

6、在“路由和远程访问服务器安装向导”中选“internet连接”(就是连向internet的那个连接),点“下一步”。

7、选“完成” 到此为止,nat共享设置也就完成了,内部的主机也能上网了。内部主机的网络设置如下:

ip地址范围是912.168.0.2~192.168.0.254,子网掩码为255.255.255.0,网关为192.168.0.1,dns为isp给的地址,我们的是211.98.xxx.xxx

二、利用nat来映射端口

1、添加nat协议。右击“常规”,-》“新路由选择协议”

2、在“新路由选择协议”中选择“网络地址转换(nat)”,点击“确定”

3、这样在“ip路由选择”中就多了一项“网络地址转换(nat)”

4、右击“网络地址转换(nat)”,添加“新接口”

5、在“网络地址转换(nat)的新接口”中选择“internet连接”(也就是连向internet的那个连接,可不要选错咯)

6、在“网络地址转换-internet连接属性”中选中“公用接口连接到internet”,复选“转换tcp/udp头(推荐)”

7、在“地址池“选项表里添加你需要提供端口重定向的起始地址与结束地址.(也就是你要拿出来搞端口映射的所有ip地址,一般情况下我们就一个ip地址,所以可以不用“地址池”不同之处后面再讲。

8、在“特殊端口“选项表里提供了你需要定向的数据连接协议(是tcp还是udp协议,如web和ftp就是tcp协议的),选准后“添加”

9、“添加特殊端口”,这里就是设置端口映射的核心了,把 nat 主机的哪个端口映射到内网主机的哪个端口就在这里设置,由于设有“地址池”,所以可以在“公网地址”中添上“地址池”中的任一地址,这里添的是“192.200.200.3

这就是tcp协议端口的重定向,至于udp的定向页差不多,下图就是添加端口映射后的情况。

四、测试结果

在192.200.200.55出测试了一下nat主机上的web服务器和内网中192.168.0.2上建的web服务器,得出结果如下:(不好意思,中间改过一下端口号,192.200.200.3上的8081端口映射到192.168.0.2的80端口)
===================================
关于serv-u的下载和安装,配置
花生壳域名解析的申请(看本版其他帖子)

假设所有条件完备:
主机192.168.0.1
子机192.168.0.6
要在子机上建立域名为user.vicp.net的ftp

第一步:子机serv-u的配置
和主机建立没有区别,
建立用户user
密码user
端口请设为21
(如果主机上还有ftp,那么你最好用其它端口,比如2100等)
说明:子机用端口最好是21,其它端口不稳定。易出问题。

第二步:主机的端口映射
到射手网或其它网站下载Port tunnel这个软件,免费的
(时间紧迫,没有找给大家,抱歉)

在主机 上安装好port tunnel,运行
界面相当简洁
点击”增加“按钮

出现新建属性页
给映射起个名字”新建映射“
有4项设置关键

输入端口:21(前提是局域网中没有人用21这个端口,如果主机或其它子机有ftp,端口一定要设为不同)
捆绑地址:(选默认值)非确定(0.0.0.0)
输出端口:21(一定要和输入端口?/ca>

10. 什么是FTP ,Linux的介绍

什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet, 你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。
FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。
1.ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。
2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。
5. FTP的工作方式
FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。
下面介绍一个这两种方式的工作原理:
Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

单的说,Linux是Unix克隆(Unix clone)或Unix风格(Unix alike)
的操作系统(OS),在原代码级上兼容绝大部分Unix标准(指的是IEEE
POSIX,System V,BSD),是一个支持多用户, 多进程,多线程,实时性
较好的功能
强大而稳定的操作系统.它可以运行在x86 PC,Sun Sparc,Digital Alpha
,680x0,PowerPC, MIPS等平台上,可
以说Linux是目前运行硬件平台最多的操作系统. Linux最大的特点在于
它是GNU(Gnu's Not Unix----有点分形与混沌的意味----无限自包含,
简单的说GNU是一种自由软件体系)的一员,遵循公共版权许可证(GPL),秉承
"自由的思想,开放的源码"的原则,成千上万的专家/爱好者通过Internet
在不断地完善并维护它,可以说Linux是计算机爱好者自己的操作系统.
追述Linux的历史直到1990年,Linus Torvalds还是芬兰赫尔辛基大
学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理
多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小
的Unix操作系统,主要用于操作系统教学)得到灵感,进一步产生了
自认为狂妄的想法----写一个比Minix更好的Minix,于是开始写了
一些硬件的设备驱动程序,一个小的文件系统,......,这样0.0.1
版本的Linux就出来了,但是它只具有操作系统内核的勉强的雏形,
甚至不能运行,你必须在有Minix的机器上编译以后才能玩.这时候
Linus已经完全着迷而不想停止,决定踢开Minix,于是在1991年10
月5号发布Linux 0.0.2版本,在这个版本中已经可以运行bash
(the GNU Bourne Again Shell----一种用户与操作系统内核通讯的软件)
和gcc(GNU C 编译器).从一开始,Linus就决定自由扩散Linux,包括原代码,
他在comp.os.minix新闻讨论组里发布Linux 0.0.2时写到:
"Do you pine for nice days of Minix-1.1, when mem were men
and wrote their own device drivers? Are you without a nice
project and just dying to cut your teeth on a OS you can
try to modify for your needs? Are you finding it frustrsting
when everything works on Minix? No more all-nighters to
get a nifty program working? Then this post might be just
for you.
"As I mentioned a month ago, I'm working on a free version
of a Minix-lookalike for AT-386 computers. It has finally
reached the stage where it's even usable(though may not be
depending on what you want),and I am willing to put out
the sources for wider distribution. It is just version
0.0.2 ... but I've successfully run bash,gcc,gnu-make,
gnu-sed,compress,etc.under it."
随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的
内核开发,Linux倾向于成为一个黑客的系统----直到今天,在Linux社区
里内核的开发被认为是真正的编程.由于一批高水平黑客的加入,使Linux
发展迅猛,到1993年底94年初,Linux 1.0终于诞生了! Linux 1.0已经是一
个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,
在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道于此,
不过自从2.1.xx系列的内核Linux开始走高端的路子----硬件的发展太快了,
但是Linux不会失去它的本色.Linux具有良好的兼容性和可移植性,大约在
1.3版本之后,开始向其他硬件平台上移植,包括号称最快的CPU---Digital
Alpha(至少目前主频是最高的).所以不要总把Linux与低档硬件平台联系
到一块,Linux发展到今天,这是一个误区,它只是将硬件的性能充分发挥
出来而已,Linux必将从低端应用横扫到高端应用!
在Linux的发展历程上还有一件重要的事:Linux加入GNU并遵循公共
版权许可证(GPL).此举大大加强了GNU和Linux,几乎所有应用的GNU
库/软件都移植到Linux,完善并提高了Linux的实用性,而GNU有了一
个根基,我现在也搞不清楚到底是GNU Linux呢还是基于Linux的GNU.
:-) 更重要的是遵循公共版权许可证,在继承自由软件的精神的前
提下,不再排斥对自由软件的商业行为(如把自由软件打包以光盘形
式出售),不排斥商家对自由软件进一步开发,不排斥在Linux上开发
商业软件.从此Linux又开始了一次飞跃,出现了很多的Linux发行版
,如Slackware,Redhat,Suse,TurboLinux,OpenLinux等十多种,而且
还在增加,注意你不能说"Redhat Linux""Suse Linux""Slackware
Linux"等等,Linux主要指操作系统内核,对所有发行版内核原代码
都是一样的(但集成的内核版本可能因发行时间不同而有所不同).
还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移
植到Linux上来,如今很多IT业界的大腕如IBM,Intel,Oracle,Infomix
,Sysbase,Corel,Netscape,CA,Novell等都宣布支持Linux! 商家的
加盟弥补了纯自由软件的不足和发展障碍,Linux迅速普及到广大计
算机爱好者,并且进入商业应用,正是打破某些公司垄断文化圈的希
望所在!!
Linux是爱好者们通过Internet协同开发出来的,当然它的网络功能十
分强大,比如你可以通过ftp,nfs等来安装Linux,用它来做网关等等.
随着Linux的发展衍生出来的应用恐怕出乎Linus本人最初的预料,
如有人用它来做路由器,有人来做嵌入式系统,有人来做实时性系统.
.....常有新手问Linux能做什么,其实它不象那些中看不中用的操作
系统,不在于你用它能干什么,而在于你想干什么!
Linux的兴起还给人们很多启迪与思考,如集市式软件开发的讨论,
又如自由软件的精神......
.
参考资料:http://..com/question/3596242.html

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:712
制作脚本网站 发布:2025-10-20 08:17:34 浏览:974
python中的init方法 发布:2025-10-20 08:17:33 浏览:685
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:837
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:743
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1085
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:314
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:194
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:882
python股票数据获取 发布:2025-10-20 07:39:44 浏览:840