<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>可可熊的窝 &#187; XylFTP</title>
	<atom:link href="http://cocobear.info/blog/category/my-programming/xylftp/feed/" rel="self" type="application/rss+xml" />
	<link>http://cocobear.info/blog</link>
	<description>K.I.S.S</description>
	<lastBuildDate>Sat, 10 Dec 2011 16:11:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>读取E680(i,g)的native.db文件</title>
		<link>http://cocobear.info/blog/2009/01/13/data-of-e680-native-db/</link>
		<comments>http://cocobear.info/blog/2009/01/13/data-of-e680-native-db/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 08:51:35 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[XylFTP]]></category>
		<category><![CDATA[bsddb]]></category>
		<category><![CDATA[E680]]></category>

		<guid isPermaLink="false">http://cocobear.info/blog/?p=462</guid>
		<description><![CDATA[E680手机使用了Berkeley DB，关于这个数据库的一些信息可以看我给的链接。 很早以前就有打算要写个Python读取native.db（不知道这个的请G之）中联系人，短信的程序，不过没能成功，这两天又接触到了bsddb，于是今天分析了下这个native.db，没想到原来挺简单的。Berkeley DB本来就是一个很简单的数据库，只是在E680中系统把多个数据库同时存放在了一个文件中native.db，所以不可以直接使用bsddb.btopen来直接打开这个文件。由于Berkeley DB中只是一种类似Python中dict的数据库（key=value）所以要存放手机联系人（有很多字段，如地址，电话&#8230;），就需要使用多个数据库，然后每个数据库使用索引来与其它数据库建立联系。按照一般的想法应该是多个数据库的key是作为索引，然后value分别存放各种信息，但E680中的native.db恰好相反。 其实这样的结构也是很简单的，但是我在写代码的时候遇到一个问题，从某个数据库中读取一个key，然后使用bsddb中的get方法去取这个key对应的value，结果确是None，以前好像就是卡在了这一块，似乎与这个value的值有关系，这个value是二进制数据：“< x03x00x00”，不理解为什么这里不直接用整数作为索引而用这么奇怪的数据，或者这里是某种编码？ 先不理这个，不管这个value是什么，使用sorted把每个数据库按照其value排序,下面是所有代码: 读取E680联系人: #!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2 #Author: cocobear.cn@gmail.com &#34;&#34;&#34; 获取数据库名: db = bsddb.db.DB() db.open('native.db',bsddb.db.DB_UNKNOWN,bsddb.db.DB_RDONLY) db.keys() &#34;&#34;&#34; import bsddb db_file = 'native.db' databases = [('姓名','780_contact_table.first name'),('手机1','780_contact_table.mobile1'),('手机2','780_contact_table.mobile2'),('家庭1','780_contact_table.home1'),('家庭2','780_contact_table.home2'),('工作1','780_contact_table.work1'),('工作1','780_contact_table.work1'),] databases = [('姓名','780_contact_table.first name'),('手机1','780_contact_table.mobile1')] out = [] for database in databases: #进行单文件多数据库操作 需要每次新建一个环境 #因此下面这行在for循环里 db =bsddb.db.DB() db.open(db_file,database[1],bsddb.db.DB_UNKNOWN,bsddb.db.DB_RDONLY) #每次读一个数据库 [...]]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2009/01/13/data-of-e680-native-db/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>俺又从伟大的首都回来了-续</title>
		<link>http://cocobear.info/blog/2007/10/29/%e4%bf%ba%e5%8f%88%e4%bb%8e%e4%bc%9f%e5%a4%a7%e7%9a%84%e9%a6%96%e9%83%bd%e5%9b%9e%e6%9d%a5%e4%ba%86-%e7%bb%ad/</link>
		<comments>http://cocobear.info/blog/2007/10/29/%e4%bf%ba%e5%8f%88%e4%bb%8e%e4%bc%9f%e5%a4%a7%e7%9a%84%e9%a6%96%e9%83%bd%e5%9b%9e%e6%9d%a5%e4%ba%86-%e7%bb%ad/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 15:12:04 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[XylFTP]]></category>

		<guid isPermaLink="false">http://cocobear.info/blog/2007/10/29/%e4%bf%ba%e5%8f%88%e4%bb%8e%e4%bc%9f%e5%a4%a7%e7%9a%84%e9%a6%96%e9%83%bd%e5%9b%9e%e6%9d%a5%e4%ba%86-%e7%bb%ad/</guid>
		<description><![CDATA[第二天早上还正睡得好着呢，就被一阵电话铃给吵醒了，本来以为是老大打得还准备埋怨两句，没想到是王老师打的:-) 出去吃了个早点，就去了决赛地点，已经有好多参赛的小组来了，都是很年轻的小伙，还看到了嘉宾名单里有徐继哲，呵呵，又一次要见到他了，还有宫敏，程勇（做jfox的)，苏哲（google的人，做scim的，不过因为临时有时没能到场)。 没想到的是最后进入决赛的9支队伍除了我们和东软的一队，其它的都是中科院各所的研究生，他们的项目里有两个我比较感兴趣，都是python做的，一个是搜索引擎，另一个是多媒体编辑器，不过多媒体编辑器不太完整，只实现了播放的功能因此最后和我们一样只取得了优秀奖。 值得一提的是东软那组做的东西，具有很浓重的商业气味，就连PPT感觉都很专业，很明显是受过专业的、有实际项目经验的老师培养，东西也具有一定的实际意义：可定制企业管理内核。 比赛的结果并不重要，我们也没有专门为这个比赛去准备，因此项目的技术含量和别人显然不在一个档次，因此没有好的名次是很明显的，不过论开发模式，我们应该算是最纯粹、最全面的开源软件开发模式。而且有些项目甚至只有Windows平台上的东西，让我不爽的很！ 评奖完毕后徐继哲又和我们聊了一会儿，宫敏知道我们是西安来的也过来凑热闹一块儿聊了一会儿。然后就一起合了影后，他们便离开了。 由于前一天找了两个多小时没找到清华正门，吃完饭后我们继续去寻找清华正门，没想到离我们住得地方那么近，昨天绕了一个大圈。又逛了逛清华，看了看以前的旧门，就坐公交去北京西站了。 BWT：俺和那个做多媒体的研究生聊了一会儿，他说到北京现在博士学（和海归硕士）历才给解决户口问题，因此他毕业都不打算留北京了。后来又听除哲继说他目前还没有北京的户口，真是太和谐了啊，以后北京全住博士！！]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2007/10/29/%e4%bf%ba%e5%8f%88%e4%bb%8e%e4%bc%9f%e5%a4%a7%e7%9a%84%e9%a6%96%e9%83%bd%e5%9b%9e%e6%9d%a5%e4%ba%86-%e7%bb%ad/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>xylftp服务器端V1.0发布</title>
		<link>http://cocobear.info/blog/2007/06/25/xylftp%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%ab%afv10%e5%8f%91%e5%b8%83/</link>
		<comments>http://cocobear.info/blog/2007/06/25/xylftp%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%ab%afv10%e5%8f%91%e5%b8%83/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 14:30:35 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[XylFTP]]></category>
		<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">http://cocobear.info/blog/?p=149</guid>
		<description><![CDATA[原引：http://www.xiyoulinux.cn/blog/?p=14 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） 由于个人原因在编码阶段我做了很少的工作，在这里再次对所有的朋友说一声“对不起！”。一个学期了，终于有了结果，象刘洋同学说的“大家通过一起做一个项目，一起风雨走来，一起体味其中的酸甜苦辣”，不管怎么样，终究是走了过来，确实没有什么槛是过不去的！]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2007/06/25/xylftp%e6%9c%8d%e5%8a%a1%e5%99%a8%e7%ab%afv10%e5%8f%91%e5%b8%83/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>24小时才找到的一个bug</title>
		<link>http://cocobear.info/blog/2007/05/18/24%e5%b0%8f%e6%97%b6%e6%89%8d%e6%89%be%e5%88%b0%e7%9a%84%e4%b8%80%e4%b8%aabug/</link>
		<comments>http://cocobear.info/blog/2007/05/18/24%e5%b0%8f%e6%97%b6%e6%89%8d%e6%89%be%e5%88%b0%e7%9a%84%e4%b8%80%e4%b8%aabug/#comments</comments>
		<pubDate>Fri, 18 May 2007 08:23:32 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[XylFTP]]></category>
		<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">http://cocobear.info/wordpress/?p=105</guid>
		<description><![CDATA[由于写FTP服务器时有多处需要用到socket套接字，也为了以后写Linux下的网络程序方便就把socket套接字进行了封装。 安装socket套接的的工作原理把socket一套函数(socket,bind,listen,accept,connect)封装为三个函数：_listen,_accept,_connect。 _listen函数中首先使用socket创建一个套接字，因为是在本机监听，所以使用的地址就是本机的IP地址。然后使用bind把socket生成的socket_fd与本机的一个端口号绑定，这个端口号为_listen的唯一参数。最后使用listen开始监听，本函数返回一个文件描述符，也就是socket产生的文件描述符。 _accept函数中直接调用系统的accept函数阻塞自己，直到有客户请求就接受请求，并且返回一个connect_fd的文件描述符（由accept产生），该函数的参数为_listen返回的文件描述符。 _connect函数与_listen函数类似也是先使用socket创建一个套接字，不过这里使用的地址就是服务器的地址与端口号，而不是本机地址与端口，这两个由该函数的参数给出。接下来它就使用connect去连接指定服务器的端口。 在测试的时候发现了一个bug，_accept返回的值一直为0，昨天中午开始找了半天的时间也没有发现问题，最后无耐之下使用了全局变量，才使用整个程序能够正常运行，不过这样一来就没有达到我封装socket的目的，而且也没有找到bug的原因，今天中午继续查bug，结果发现即使我封装的_accept只有一行语句: return accept(socket_fd,(struct sockaddr *)&#038;client_addr,&#038;len); 仍然出错，最后看了一下调用_accept那一块的代码，原来问题出在下面的代码： 35 if ((connect_fd = _accept(socket_fd,client) == -1)) { 36 exit(0); 37 } 竟然找了N长时间没有发现！]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2007/05/18/24%e5%b0%8f%e6%97%b6%e6%89%8d%e6%89%be%e5%88%b0%e7%9a%84%e4%b8%80%e4%b8%aabug/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>最近项目的进展</title>
		<link>http://cocobear.info/blog/2007/05/15/%e6%9c%80%e8%bf%91%e9%a1%b9%e7%9b%ae%e7%9a%84%e8%bf%9b%e5%b1%95/</link>
		<comments>http://cocobear.info/blog/2007/05/15/%e6%9c%80%e8%bf%91%e9%a1%b9%e7%9b%ae%e7%9a%84%e8%bf%9b%e5%b1%95/#comments</comments>
		<pubDate>Tue, 15 May 2007 13:19:32 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[XylFTP]]></category>
		<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">http://cocobear.info/wordpress/?p=103</guid>
		<description><![CDATA[五一期间由于我们服务端这边的人基本上都没空，所以五一的时候就和客户端拉下了很大的距离。再加上前面一段时间一直停留在对模块的划分上，所以我们这边是完全跟不上客户端的脚步了。 五一放完假我们似乎又停到了详细设计上，这又是一块难啃的骨头，因为是C语言编程，如果按照软件工程的规范来做，详细设置的时候定义好所有要用到的函数，包括参数，这样对于我们这些没接触过软件工程的人来说无疑是一个巨大的难题。这似乎是不可能的事情，等了两三天毫无进展。在周三的例会上，王老师提出了这个问题，建议我们详细设计与编码同时开始，本来我也打算提出这个建议，没想到王老师先说了:) 接下来我们就开始进行编码了，不过从这几天的情况来看并不是很乐观，有一个很大的问题就是沟通，也许是从也没有在一块试着多人合作写代码，在接口的处理上，一些常用功能的封装上存在着很大的问题。 经过了这段时间的煅炼，觉得一个人在团队中的合作精神确实是非常重要的，而一个既有技术，又有领导才能的人更是难得。]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2007/05/15/%e6%9c%80%e8%bf%91%e9%a1%b9%e7%9b%ae%e7%9a%84%e8%bf%9b%e5%b1%95/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>概要设计中结构图</title>
		<link>http://cocobear.info/blog/2007/04/12/%e6%a6%82%e8%a6%81%e8%ae%be%e8%ae%a1%e4%b8%ad%e7%bb%93%e6%9e%84%e5%9b%be/</link>
		<comments>http://cocobear.info/blog/2007/04/12/%e6%a6%82%e8%a6%81%e8%ae%be%e8%ae%a1%e4%b8%ad%e7%bb%93%e6%9e%84%e5%9b%be/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 10:39:59 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[XylFTP]]></category>
		<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">http://cocobear.info/wordpress/?p=66</guid>
		<description><![CDATA[在前一次的基础上做了较大的改动，欢迎指正，采用第二个副图： update1:删除了bind()参数，先前bind()参数使用了IP地址。 update2:使用刘洋同学画的那个，把处理的描述改为了中文描述，而不是一些不太清楚的函数，修改了初始化部分的顺序，最开始读取配置文件。]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2007/04/12/%e6%a6%82%e8%a6%81%e8%ae%be%e8%ae%a1%e4%b8%ad%e7%bb%93%e6%9e%84%e5%9b%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>需求分析[定稿]</title>
		<link>http://cocobear.info/blog/2007/04/12/%e9%9c%80%e6%b1%82%e5%88%86%e6%9e%90%e5%ae%9a%e7%a8%bf/</link>
		<comments>http://cocobear.info/blog/2007/04/12/%e9%9c%80%e6%b1%82%e5%88%86%e6%9e%90%e5%ae%9a%e7%a8%bf/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 08:51:27 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[XylFTP]]></category>
		<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">http://cocobear.info/wordpress/?p=63</guid>
		<description><![CDATA[主要内容由刘洋同学起草，在贾孟树、刘伟等同学的基础上经过大家讨论由我对配置文件更新，服务端实现的命令主要由我起草，在大家的讨论下确定，刘洋同学再次在这些基础上对需求分析进行改进。 最后我修改了其中较明显的一些错误，添加了命令对应的返回码，并在配置文件中添加FTP使用的端口号，使用户可以自行配置FTP监听的端口号。 需求分析]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2007/04/12/%e9%9c%80%e6%b1%82%e5%88%86%e6%9e%90%e5%ae%9a%e7%a8%bf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>关于FTP的一些东西</title>
		<link>http://cocobear.info/blog/2007/04/09/%e5%85%b3%e4%ba%8eftp%e7%9a%84%e4%b8%80%e4%ba%9b%e4%b8%9c%e8%a5%bf/</link>
		<comments>http://cocobear.info/blog/2007/04/09/%e5%85%b3%e4%ba%8eftp%e7%9a%84%e4%b8%80%e4%ba%9b%e4%b8%9c%e8%a5%bf/#comments</comments>
		<pubDate>Mon, 09 Apr 2007 14:38:17 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[XylFTP]]></category>
		<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">http://cocobear.info/wordpress/?p=57</guid>
		<description><![CDATA[还没有博客里介绍过这个项目，这里正式的介绍一下，项目名称：xylFTP，偶们Linux兴趣小组发起的一个Linux下的项目，目的是为了熟悉Linux下的网络编程，也积累一下团体合作，软件开发的经验。我在项目开始的时候提出了遵循软件开发标准这一建议，后来得到大家的支持，但这也成为摆在我们面前的一个重大难题，我们中几乎所有的人都是自己写写代码，注释有时候都写的不齐，而这次要完完整整的写文档，这确实是一个很大的突破，也是一个挑战，已经过去了三个星期的时间，大家的时间用来熟悉FTP协议本身，和完成初期的文档，例如需求分析，概要设计，进度确实有些慢了，不过也是有原因的，对协议的不清楚以及对文档的陌生，总算一步一步走下来了，现在需求分析已经基本定稿，概要设计也有了雏型，对协议也清楚了很多。 我们是分两个小组来做服务端与客户端，服务端使用的是C语言，当然是在Linux下做了，客户端使用的是Java。我参加的是服务端的设计，因为对协议看的比较多些，上星期的时候讲了一下FTP工作的整个过程，做了一个PPT。 但是在服务器的具体socket处理方面还是不太清楚，今天下午和王聪讨论的时候逐渐把整个FTP socket一块的东西弄的清楚了很多，也有了今天晚上黑板上讲的一些东西，觉得两个人在一块讨论确实能够解决很多问题，而且能学到很多东西。 PPT下载 点击查看]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2007/04/09/%e5%85%b3%e4%ba%8eftp%e7%9a%84%e4%b8%80%e4%ba%9b%e4%b8%9c%e8%a5%bf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>项目文档&#8211;概要设计说明书 V0.1</title>
		<link>http://cocobear.info/blog/2007/04/06/%e9%a1%b9%e7%9b%ae%e6%96%87%e6%a1%a3-%e6%a6%82%e8%a6%81%e8%ae%be%e8%ae%a1%e8%af%b4%e6%98%8e%e4%b9%a6-v01/</link>
		<comments>http://cocobear.info/blog/2007/04/06/%e9%a1%b9%e7%9b%ae%e6%96%87%e6%a1%a3-%e6%a6%82%e8%a6%81%e8%ae%be%e8%ae%a1%e8%af%b4%e6%98%8e%e4%b9%a6-v01/#comments</comments>
		<pubDate>Sat, 07 Apr 2007 02:18:34 +0000</pubDate>
		<dc:creator>可可熊</dc:creator>
				<category><![CDATA[XylFTP]]></category>
		<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">http://cocobear.info/wordpress/?p=50</guid>
		<description><![CDATA[一 引言 1.1 编写目的 确定整个程序设计框架，以及需要实现的功能，对程序接口进行定义，定义运行状态以及出错处理。 1.2 背景 a.项目名称：xylFTP(待定) b. 任务提出者：王老师 开发者：见软件需求说明书1.2.b 用户：服务端主要面向Linux用户，客户端面向所有可以使用JVM的用户。 中心：运行FTP服务器的机器 1.3 定义 JVM：java virtual machine FTP：File Transfer Protocol 1.4 参考资料 a.软件需求说明书[url]http://wangcong.org/blog/?p=119[/url] b.见软件需求说明书1.4 [B]二 总体设计[/B] 2.1 需求规定 a.输入：服务端需要配置文件xylftp.con，不接受其它参数输入。客户端接受从终端输入的命令，以及启动客户端所带参数。 -u $user 使用$user连接，当不使用-u时使用shell用户名连接。 -h [$command]显示客户端所允许的命令，$command指定的情况下显示$command相关使用方法。 -v 显示版本信息 -d 显示更多额外信息，供查错使用。 -a 自动登录，使用.xylftpauto.conf文件中包含的内容自动登录 b.输出：服务端在运行过程中产生文件xylftp.log，收集一些客户端连接信息，包括登录时间，IP，下载、上传文件、数据量，以及断线时间。客户端响应终端输入显示帮助，以及服务端返回的信息，同时保存登录时用户信息在xylftpauto.conf文件中，供自动登录使用。 2.2 运行环境 服务端支持i368，x86_64，客户端适用于所有可使用JVM的机器上。 2.3 基本设计概念和处理流程 服务端： 目的是设计一个简洁，高效的FTP服务器，并不涉及到较为复杂的安全策略(有关FTP的明文传输)，以较快的速度完成整体框架的设计，然后对具体模块进行改进，优化。 服务端程序配套的带有一个xylftptool的工具，可以用它来生成配置文件(当配置文件被改乱或者丢失的时候使用)，以及检查配置文件的错误，同时可以生成用户数据，采用md5加密存储。服务端启动的时候先读取xylftp.conf文件，将文件中的参数传递给主程序，然后通过参数解析函数完成参数的处理，把相应的值赋给全局变量以及函数。主程序调用ftp_linsten()函数进行监听,如果相应端口(未必是21,可根据xylftp.conf文件更改)有连接请求，则调用ftp_server()处理，此时应该考虑服务端使用的是passive还是port模式，分别采取不同的处理方式，如果是passive模式，则应开启相应的data port等待客户端的数据连接，如果是port模式，则使用端口20数据传输的初始化。随后该函数使用fork()建立新的进程处理用户请求。主程序继续处于ftp_listen()状态，直到进程被杀死。 客户端; 设计一个简单，实用的FTP客户端，支持常用的FTP命令，使用java标准库开发，并且预留GUI接口。 客户端首先接收命令行的输入，使用命令解释程序来解析命令，如果本地可以完全的命令，直接调用相应的函数完成，如果需要传送到远程FTP主机，则传输相应的命令到远程FTP。同时客户端不断接收服务端的处理结果，并显示。 2.4 [...]]]></description>
		<wfw:commentRss>http://cocobear.info/blog/2007/04/06/%e9%a1%b9%e7%9b%ae%e6%96%87%e6%a1%a3-%e6%a6%82%e8%a6%81%e8%ae%be%e8%ae%a1%e8%af%b4%e6%98%8e%e4%b9%a6-v01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

