[关闭]
@lishuhuakai 2016-11-15T22:05:28.000000Z 字数 655 阅读 1260

一起来写ftp server 02 -- 一次失败的尝试


上一个版本之中,最基本的功能已经实现了,但是可以明显地看得到, CmdHandle这个类过大,而DataHandle这个类又过小,所以,我想平衡一下,将CmdHandle这个类的数据传输部分分散至DataHandle这个类中,起先并没有想太多,只是想这么来干一下.这里需要注意一下的是,CmdHandleDataHandle两个类的代码分别在两个进程中执行.

不过,写着写着,我发现,这个想法是很愚蠢的.为什么这样说呢?

在我写的这个ftp server中,父子进程是通过管道来进行交流的,既然已经是两个进程了,说明这两者基本上不共享什么东西,父进程和子进程的工作目录也是分散开的.

为了代码的实现简单,服务端所处的目录应该和客户端所看到的目录一致,如果数据传送部分的代码都放在DataHandle这个类中的话,DataHandle的目录应该和客户端所看到的一致.即使不一致,每次客户端发送目录变更,处理命令的进程也要将这个消息传递给传送数据的进程.

有意思的是,既然都这样了,还要处理命令的进程干嘛?每次数据传送都通过数据传送进程,每次目录更改命令处理进程都要通知数据传送进程,而ftp不就只是一些目录更改和数据传送的东西吗?处理命令的进程只是一个中介,就是传了一些话,并没有干什么实事,不要了效率或许会更高.

当然,或许你会这样来反驳我,如过处理命令的进程直接将要传送的数据的绝对路径发送过来,那么就不用通知处理数据连接的进程关于目录变更的事情了,也对.你可以尝试一下.

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注