|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2021/10/18 12:25:34 |
标题: |
求教idftpserver如何向idftpclient发送指令? |
浏览:1047 |
|
加入我的收藏 |
楼主: |
求教idftpserver如何向idftpclient发送指令? 需要像idtcpclient一样开条线程循环读取SERVER指令嘛?
谢谢!!!!!!!!!!
----------------------------------------------
- |
作者: |
|
2021/10/18 15:48:41 |
1楼: |
ftp有既定协议的,怎么可能你想怎么来就怎么来
----------------------------------------------
--
|
作者: |
|
2021/10/19 14:26:46 |
2楼: |
客户端和服务端都是自己写的,还不是你想怎么样就怎么样
----------------------------------------------
-
|
作者: |
|
2021/10/20 10:04:26 |
3楼: |
1. 既然用 FTP,就用 FTP 的标准。你如果另外自己发命令,不符合 FTP 标准。Indy FTP 的服务器端和客户端的控件,都实现了 FTP 的通讯协议,如果用 FTP 功能,你好像没必要自己另外发命令。即便你要发命令,也应该在 Indy 的代码框架上做。反正它有源代码的。
2. 发命令,和是否开一条线程没关系。发命令本身,是你要搞清楚在 TIdFTPServer 上面,使用什么方法或者函数去发。至于调用那个方法或函数,用什么线程,是另外一回事。写代码的人,一定要搞清楚,你的一段代码,是哪个线程在执行。
3. FTP Server 本身是 TCP Server,TIdFTPServer 是基于 TIdTCPServer 的。所以你应该搞清楚的是 TIdTCPServer 的用法和代码架构。
----------------------------------------------
-
|
作者: |
|
2021/10/20 10:05:21 |
4楼: |
4. TIdTCPServer 实际上有一个 OnExecute 事件,这个事件,实际上是服务器端的线程循环触发的,要向客户端发送数据,就是在这个 OnExecute 里面写代码。
----------------------------------------------
-
|
作者: |
|
2021/10/20 16:38:28 |
5楼: |
@pcplayer 谢谢pcplayer大神指点
之所以要向客户端发送指令,因为希望服务端能够控制客户端那边做出传输那些指令,因为设计原因,客户端反而是无人工操作的。
之前用TIdTCPServer和TIdTCPClient写的代码,也是用来传输文件用的,但使用过程中总是隔些时间就会出现各种莫名其妙的问题,可能功底太差吧,试用INDY FTP后感觉比自己写的传输的健壮很多,所以想用INDY FTP代替自己写的。
因为FTP本身是2个端口,一个指令端口一个传输端口,所以想直接用FTP的指令端口实现服务端发控制指令给客户端,看了下TIDFTPCLEINT代码,它是发送指令后用ReadLnWait等待服务器反馈的,所以想开条线程循环读取服务端指令,但这样做又会影响FTP本身正常的运行,所以想咨询各位大神,是否单独再搞个TIdTCPServer和TIdTCPClient再开一个端口用来服务器端给客户端下指令。
----------------------------------------------
-
|
作者: |
|
2021/10/20 16:45:58 |
6楼: |
你的需求,你单独搞一个 TCP Server 和 TCPClient 来做你自己的命令传输,比在 FTPServer 上面搞,更正规。
就好比你买了个汽车,想要出去玩的时候还可以划船,不如单独买个船用汽车拖出去。如果非要把汽车改成又是汽车又是船,麻烦太多了。
----------------------------------------------
-
|
作者: |
|
2021/10/21 9:12:16 |
7楼: |
谢谢pcplayer,是的可能想法太天真,本想省个端口的,不然服务器要开3个基础端口了。
----------------------------------------------
-
|
|