如何用DELPHI编写FTP服务器,请告知原理,和最简单的方法,以及示例代码,谢谢(200分)

  • 主题发起人 主题发起人 liufang1
  • 开始时间 开始时间
L

liufang1

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用DELPHI编写FTP服务器,请告知原理,和最简单的方法,以及示例代码,谢谢
请各位关注!
 
我等!
我等!
 
因为FTP是由一系列标准命令组成,所以你只要对每个命令进行响应就可以了。
如:
USER xxx ---- 用户名,当你收到这个命令时就要记下用户名,然后送出Password...

具体命令我这儿没有。

不过你可以这样来知道:
Telnet ftp.cc.dd.net 21
^^^^^^^^^^^^^^^^^^^^^这里用一个ftp服务器就可以了(如:u1.51.net)。
输入用户名,密码

进去后输入HELP 你可以看到所有的命令了。
 
>HydonLee
可我在DELPHI里面如何操作这些东西?
 
>>wingerk
D6里面有能做FTP服务器控件?
谢谢!
 
D6的DEMO/INDY里有一个FTPSERVERDEMO,很简单很好用,需要你增加登陆认证和路径限制
代码就可以了
也可以去INDY的网站上下载http://www.nevrona.com/Indy/
 
>>wingerk
哪个DEMO是用D6的空间完成的?
我现在去看看,装D6
 
等待关注
 
ICS有一个FtpServer控件,而且有例子,很简单
 
可以试用TNMFTP,
在Help 有例子。
例如:连接:
if NMFTP1.Connected then
NMFTP1.Disconnect
else
begin
NMFTP1.Host := Edit1.Text;
NMFTP1.UserID := Edit2.Text;
NMFTP1.Password := Edit3.Text;
NMFTP1.Connect;
end;
下载: NMFTP1.Download(RemoteFile, LocalFile);
上载: NMFTP1.Upload(LocalFile, RemoteFile);


 
>ka_lee,
TNMFTP能做FTP的饿客户端,但服务器端能做吗?请详细
谢谢!

》》all
ICS的ftpsserver我知道可以做,但我不明白具体操作步奏,有ICS控件的帮助文件吗?
谢谢!
 
各位能对我解释一下FTP服务的原理吗?
谢谢!
 
其实FTP就是面向连接的TCP.与TELNET不同的是:FTP使用两个端口
21号端口为指令端口,好象20号是数据端口吧。

所以,FTP就是要监听21号端口,接受指令并解析,如果有文件要传输,打开数据端口。

在delphi中,你使用两个Socket就可以了。

不过为了和标准的兼容,你最好提供以下命令:
USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT
PASS PASV STOR REST CWD STAT RMD XCUP OPTS
ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH
REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ
QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT
以及固定的返回值:
如:
220- //connect ok
530- //not log in
331- //user name ok
.... //etc

我不是专门写这方面的,所以也只知道这么多。
不过,我想大家都比较感兴趣,我也想试着做做。。。。


 
不好意思,看了看,INDY没有FTPSERVER的DEMO,我说的应该是ICS的那个。那个的确
是比较麻烦,仔细分析还是很简单的,主要是几个事件的处理:
TFtpServerForm.FtpServer1Authenticate 这里处理用户的登陆,验证他的用户名
密码,例子里是默认任何都可以
TFtpServerForm.FtpServer1RetrSessionConnected 这里是处理传文件的,基本不用
改,除非你有特殊处理
TFtpServerForm.FtpServer1ChangeDirectory 这里是用户改变目录的处理,可以在
这里限制用户可以访问的目录,例子里不处理,可以访问任何目录
其他的事件可以不改原来的代码,照用就可以了,这个还是很简单的

我看了一下INDY的FTPSERVER控件,它的用户登陆管理已经很完善了,不太需要编写处
理代码了,除非你要提供管理用户帐号的功能才需要,但是文件管理方面就需要好好写
代码来处理,它提供了大量的事件来方便对用户相应的命令操作写代码。可以通过看看
HELP来写出相应的代码来,应该不太难。
 
后退
顶部