@lishuhuakai
2016-11-15T22:05:28.000000Z
字数 655
阅读 1237
上一个版本之中,最基本的功能已经实现了,但是可以明显地看得到, CmdHandle
这个类过大,而DataHandle
这个类又过小,所以,我想平衡一下,将CmdHandle
这个类的数据传输部分分散至DataHandle
这个类中,起先并没有想太多,只是想这么来干一下.这里需要注意一下的是,CmdHandle
和DataHandle
两个类的代码分别在两个进程中执行.
不过,写着写着,我发现,这个想法是很愚蠢的.为什么这样说呢?
在我写的这个ftp server
中,父子进程是通过管道来进行交流的,既然已经是两个进程了,说明这两者基本上不共享什么东西,父进程和子进程的工作目录也是分散开的.
为了代码的实现简单,服务端所处的目录应该和客户端所看到的目录一致,如果数据传送部分的代码都放在DataHandle
这个类中的话,DataHandle
的目录应该和客户端所看到的一致.即使不一致,每次客户端发送目录变更,处理命令的进程也要将这个消息传递给传送数据的进程.
有意思的是,既然都这样了,还要处理命令的进程干嘛?每次数据传送都通过数据传送进程,每次目录更改命令处理进程都要通知数据传送进程,而ftp
不就只是一些目录更改和数据传送的东西吗?处理命令的进程只是一个中介,就是传了一些话,并没有干什么实事,不要了效率或许会更高.
当然,或许你会这样来反驳我,如过处理命令的进程直接将要传送的数据的绝对路径发送过来,那么就不用通知处理数据连接的进程关于目录变更的事情了,也对.你可以尝试一下.