XYLFTP项目

xylftp服务器端V1.0发布

这学期我们linux兴趣小组主要是进行ftp项目。
我是属于服务器端的,现在我们终于可以发布了。
xylftp服务器端经过了长期测试和修复,现在已经基本完善和稳定。我们宣布正式发布我们的第一个版本供大家使用!

a) 下载:

xylftp项目的的主页在:
https://sourceforge.net/projects/xylftp

xylftp服务器端1.0版本可以在这里下载:

xylftp-server-1.0.tar.gz

b) 安装:

安装方法:用命令 tar -xvzf xylftp-server-1.0.tar.gz解压,然后进入文件目录
xylftp/server/src/,运行”make install”命令即可完成安装。

c) 卸载:

卸载方法:进入文件目录 xylftp/client/src/,运行”make uninstall”命令即可完成
软件卸载。

d) 开发:

xylftp的CVS在:
http://xylftp.cvs.sourceforge.net/

截止目前,服务器端C代码总量为2400行。参与服务器端编写的人员有:

1.董溥:完成守护进程的建立,socket连接以及写日志,实现主程序的流程。
2.郭拓:完成do_list命令。
3.贾孟树:完成parse_cmd.c,telnet.c,以及do_quit命令,以及测试和维护工作。
4.林峰:完成配置文件的解析,完成do_user,do_pass命令,参与do_syst,do_type,do_noop命令以及测试和维护工作。
5.刘伟:完成do_pwd,do_cdup,do_cwd,do_rnfr,do_rnto,do_port命令。
6.刘洋:完成do_stat,do_mode,do_fail命令,以及测试和维护工作。
7.聂海海:完成do_retr,do_mkd,do_rmd,do_dele命令。
8.王聪:完成do_stru命令,完成Makefile编写,并维护了王老师的三个命令以及整个流程的测试和维护工作。
9.王亚刚老师:完成do_abor,do_stor,do_pasv命令。

感谢各位参与!

欢迎大家测试使用,并把信息及时反馈给我们!
(错误报告请发送至xiyoulinux@googlegroups.com)

(5) 条评论

我们的项目快结束了

      虽然我们这边的进展不尽如人意,但终于也快结束了。
      今天,我们服务器这边又测试通过8个命令,这样,FTP服务器端的23个命令终于快完成了,不过时间也马上到了。今天大家很有成就感阿,一下子把之前滞留不前的几个命令全部都测试通过了,呵呵。不过我今天敲键盘也敲的我手疼阿,现在还觉得酸的很。
      由于多天未更新过一次博客,所以今天就趁机写了小小的更新一点,呵呵。

(4) 条评论

推倒重来

      今天晚上我们的项目又进行了一次讨论。
      项目开始至今已经有两个月多了,可是进展实在是龟速。今晚测试还是没通过,大家得出的感觉是,基本没有完全使用的命令。
      我们在想,要不要推倒重来呢?当初写的时候,有些抱的是先求数量再求质量的想法,导致一些问题,那就是留下很多BUG,甚至不应该叫BUG,应该叫错误。我完成我的任务之后,我自己也基本没有参与到讨论之中,感觉讨论可无聊了,半天没个可用的东西,然后一堆都不按编码规范来,我看都看不下去,变量名、函数名都没有严格按照编码规范来。整个模块太大了,不应该整个整合起来测,应该一个命令一个命令的往里加才对。
      当然这么说有点马后炮,我作为小组的成员我应该早点提出这些问题,可是没办法,我就是没法当着大家说,私底下虽然和DP说过,但是还是没有发上新闻组,我应该反省一下。
      到底要不要推倒重来呢?我们在犹豫,就等amankwah来作出决定了。

(4) 条评论

解决僵死进程问题

今天把ftp服务端这边的僵死进程的问题给解决了。

先介绍一下我们的ftp项目,我们linux小组这学期开始准备写一个ftp的客户端和服务端,客户端用Java写,服务端用才C写,项目的名字叫xylftp。客户端的进度比我们快很多,基本已经完成,我们还在编码阶段,而且进度有点慢。

我和COCOBEAR负责服务器的初始化部分。我负责读配置文件,他负责写日志,以及整个ftp的main程序。我们的部分前天已经结束,测试也通过,只是有个问题,就是连接后断开的子进程将会成为僵死进程–defunct/zombie。由于服务器是个守护进程,又无法通过wait的方式来等待子进程,所以每个连接结束后将产生僵死进程。

查看了一些材料之后,参照了这篇文章,修改之后,成功的消除了僵死进程。消除僵死进程有多个方法,我采用的是忽略信号法,主要要在fork之前要显示声明忽略信号SIGCLD,而且必须放在while循环里,因为
signal(SIGCLD, SIG_IGN);
的效用只有一次。

这样,我们的工作就基本结束了,当然,我们的服务器端离编码结束还有好长路要走,我们接下来要帮助其他部分的人编码,希望早日能够完成。因为,当初刘洋同学说是打算5月22日结束这个项目的,可是明显,我们是实现不了的。哎,还是继续加油吧!

(2) 条评论