关于idftp向服务器发送命令的实现,欢迎讨论的

2002past 2003-08-25 01:54:33
在用TELNET实现命令传送时,只需使用其SENDCMD或SENDCH就能轻松实现
如:procedure TForm1.sendExecute(Sender: TObject);
var
commd: string;
begin
commd:=commdinput.Text;
idtelnet1.SendCmd(commd); //此处还有个参数,小弟就不知如何设了。
end;
或是:
procedure TForm1.commdinputKeyPress(Sender: TObject; var Key: Char);
begin
idtelnet1.SendCh(key);
end;
并且在idtelnet的事件DataAvailable中:
procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
const Buffer: String);
begin
memo1.Lines.add(buffer);
end;
即可搞定。

那在FTP中呢?如何实现传送任意命令,最好是有例子
...全文
156 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
2002past 2003-11-04
  • 打赏
  • 举报
回复
七猫,小伍两位大哥,小弟那张帖上分给少了这张帖给你们补上。
2002past 2003-11-04
  • 打赏
  • 举报
回复
去买了本书回来,《DELPHI7编程实例与技巧集粹》书上有一个例子正好可以解决这个问题!太爽了
各位,谢谢参与,结帖散分了。谢谢大家的参与。
solonet 2003-11-03
  • 打赏
  • 举报
回复
帮你顶一下
2002past 2003-10-29
  • 打赏
  • 举报
回复
最近去重庆考高程去了,一直没来关注我们的帖了,请各路英雄继续前来论谈呀!

这么久了,都想结帖了
但是又遇到几个问题,就在此再问问各位同仁吧!
1、我想对网络进行实时的扫描,以防止网络意外中断而程序不知道造成无限等待。有没有什么像WINDOWS系统一样,一拨掉线马上就提示网线没接好什么的。
2、大家都知道,DELPHI自带的打包程序打出来的是英文版的,如何做成中文的安装程序
3、如何把一个程序做成 SQL SERVER 或 金山词霸 那样,大家同行对此也很熟,想必你也知道我的意思,就不多说。也就是对任务栏的操作等。

我有两张未结的帖,合起来一百分,如果你有能力你会请参与这两个帖上,高分赠于各位同仁,记得最好是一个帖上解决一到两个问题,我好两个帖都给你分

另一帖:http://expert.csdn.net/Expert/topic/2163/2163691.xml?temp=.8831293
2002past 2003-10-29
  • 打赏
  • 举报
回复
打错字了“命令发关框”

to jungle_1978(后学末进):

你用telnet发送命令的时候,telnet的DataAvailable 的事件是专门用来捕获服务器端返回信息的,你可以从返回信息BUFFER里比较你的第一条命令是否结束,并且是否成功等,如此再发送下一条命令。

jungle_1978 2003-10-06
  • 打赏
  • 举报
回复
2002past(青苹果):
“回令发送框”是什么?
我是试图在后台登录TELNET服务器,进行一些对用户透明的操作,
现在的问题是:比如在发送完mkdir /home/user,紧接着发送cd /home/user,但是在发送第二条指令的时候第一条指令还没有执行结束,从而执行第二条指令出错。无论用sendch还是用sendcmd,请问如何才能保证在前一条指令执行完毕以后才发送下一条指令?
2002past 2003-09-28
  • 打赏
  • 举报
回复
回 jungle_1978(后学末进)
sendch();这个命令是将单独的字符发送到服务器端,TELNET服务器将每个接收到的字符放在一个缓冲中遇到传送过来的是回车键时就执行, 你可以用回令发送框的keypress事件来发送命令,然后用TELNET的 OnDataAvaiable 事件来得到返回信息。我觉得还是用sendcmd()好些。
回 Piao40993470(ミ飘ミ)
但是在运用sendcmd()中往往会出来如此问题:要是sendcmd()返回的值不在其第二个参数里边,程序马上就挂起了,问题就是我如何知道它返回值的可能数组。谢谢热情参与!
微雪缤纷 2003-09-26
  • 打赏
  • 举报
回复
indy带源码的,楼主可以参考一下从源码入手找。。((我也没仔细研究,
源码中经常可以看到,由此可见indy也是通过标准的ftp命令来实现其功能的,我想只要研究研究就可以解决你的问题,想办法调用SendCmd吧。
function TIdFTP.RetrieveCurrentDir: string;
begin
SendCmd('PWD', 257); {Do not translate}
Result := CleanDirName(LastCmdResult.Text[0]);
end;
procedure TIdFTP.Put(const ASource: TStream; const ADestFile: string = '';
const AAppend: boolean = false);
begin
if length(ADestFile) = 0 then begin
InternalPut('STOU ' + ADestFile, ASource); {Do not localize}
end else if AAppend then begin
InternalPut('APPE ' + ADestFile, ASource, false); {Do not localize}
end else begin
InternalPut('STOR ' + ADestFile, ASource); {Do not localize}
end;
end;
jungle_1978 2003-09-25
  • 打赏
  • 举报
回复
不好意思楼主,借用贵宝地。其实我问的是idtelnet控件。
jungle_1978 2003-09-25
  • 打赏
  • 举报
回复
up!
同问:当用sendch(#13)发送了一个命令以后,怎么确定这个命令已经执行结束并已经返回结果?特别是连着发用户名/口令的时候。
2002past 2003-09-13
  • 打赏
  • 举报
回复
请问 tidftp与 tidtelnet 的 sendcmd() 有什么区别?
是不是都可以向服务器发送命令?
举例更好!
sevencat 2003-09-12
  • 打赏
  • 举报
回复
后面一个参数是返回值的容许范围 ,一般可能我们自己很少用,可能用在HTTPSERVER,CLIENT上面的。我想。(返回一个"250 read,220 file"之类的东西,250,220就是你可以写在第二个参数里面的吧,我想。)
这个参数我也没用过,不过原代码里面是这样的。
sevencat 2003-09-12
  • 打赏
  • 举报
回复
sendcmd其实不难懂,就是一句writeln而已
或者更基本一点,send一个字符串,再发送一个回车字符
duxin 2003-09-12
  • 打赏
  • 举报
回复
看到你的消息 不好意思idftp 不是很熟悉
帮你顶一下
2002past 2003-09-11
  • 打赏
  • 举报
回复
各位大虾,sendcmd()如何使用呀,请举例说明一下
tonylk 2003-09-11
  • 打赏
  • 举报
回复
关注
2002past 2003-09-05
  • 打赏
  • 举报
回复
哎, 那些DELPHI的高手都去哪里了呢!

来吧,高手们,发挥一下啥
2002past 2003-08-26
  • 打赏
  • 举报
回复
不会吧大家来支持一下啥!

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧