怎样使用ClientSocket获取FTP目录?(50分)

  • 主题发起人 主题发起人 skadon
  • 开始时间 开始时间
S

skadon

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,请教问题:
我用ClientSocket连接上FTP后,发送"LIST /",或发送"PASV"后再发送"LIST ",只返回得到
150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.
怎样接收目录数据?
 
没人帮忙吗?加100
 
ftp有2个端口:20 21
你知道吗?要在数据端口监听的.具体是21还是20我忘了,自己查吧
 
你是说我要开一个ServerSocket监听端口20?不可能吧,已经连接上了ftp服务器,我要列出某个目录下的文件和子目录列表,如何操作?
 
自己改写sockcmp单元吧
 
不会写啊,老兄,发送完了LIST命令之后怎么操作?
 
谁说要开serversocket了?client就可以.从返回信息看,你的命令是对的,只是数据没有接收到就是了.

网上不是有许多ftp client源代码吗?找一下啊

你最好去看看rfc,那里有ftp协议的详细说明
 
没找到ftp client源代码,请给一段简单的示例代码。skadon@21cn.com
 
uses WinInet;

FtpRemoveDirectory
 
在发LIST之前还要发一个PORT,
必须先准备好接收LIST的返回结果!

找一篇关于FTP协议的文章读一下
 
FTP 函 数 描 述
InternetOpen 初始化 Win32 internet
InternetConnect 打开一个FTP, HTTP, or Gopher 应用会话
FtpCreateDirectory 在服务器上建立一个新的目录
FtpRemoveDirectory 删除服务器上的一个目录
FtpOpenFile 打开服务器上的一个文件进行读写
FtpGetFile 接收指定的文件并且在本地建立它
FtpPutFile 发送指定文件到服务器
FtpDeleteFile 删除服务器上一个指定的文件
FtpSetCurrentDirectory 设置服务器上当前的工作目录
FtpGetCurrentDirectory 返回服务器当前的工作目录
FtpCommand 发送命令到服务器
FtpFindFirstFile 返回文件信息。放在 WIN32_FIND_DATA 结构中
InternetFindNextFile 调用 FtpFindFirstFile()后在目录中连续查找
FtpRenameFile 修改服务器上指定的文件的名字
 
FtpGetCurrentDirectory
 
谢谢各位。
我只想使用ClientSocket,不用其他控件。哪位有具体的,给个简单的例子。FTP协议看了,不懂,没有例子。
 
如果用ClientSocket写FTP客户端,必须用一个ServerSocket控件。
PORT 后面的参数是 本机指定接受用的IP地址和PORT号。
我只用C语言写过,没有用Delphi的Socket控件写过
 
用google搜索啊
 
http://www.tommstudio.com/newclub30/doaction.asp?action=download&type=kongjian&id=721
 
To:firstrose,谢谢。
已经搜索过,无用信息太多。http://www.tommstudio.com/上的控件用的是wininet,并不是用的TClientSocket。已经给出界面了呀,不合适。我想要的是:自己做一个FTP搜索引擎,在后台多线程运行获取FTP服务器文件列表。已经用IdFTP做了一个,占用资源非常大,开5个线程平均占用资源即达80%。使用wininet简单做了个例子,递归调用出错,业余爱好,有时间再详细研究。
继续期待TClientSocket。
 
PASV命令之后,将可以获取服务器发过来的IP地址和端口(需要解析字符串),你所需做的是,
新建一个TClientSocket,连接到这个指定的IP和端口,然后再用原来的ClientSocket发送LIST命令.新建的ClientSocket就可以接收到目录数据了.
 
谢谢各位,已经解决。
 
skadon你好你是怎么解决的
 
后退
顶部