数据库也是文件的格式之一,基于windows的数据库就是按照windows所提供的文件操作api进行读写,但数据库之所以称为数据库,最关键的是符合SQL的规范,也就是能够以sql的方式向外提供数据,其实质还是读写文件。
而且显然是索引文件,最明显的就是pack,unpack操作,pack的实质就是重整数据库文件,delete只不过是索引加标记,表示已经删除。至于数据引擎就是一系列符合sql白皮书的读写文件函数(包括在dll中)。
你又不是向外提供数据库,自己定义个索引文件就可以了.
*******************************************************************
个人建议采用xml方式,也不需要按照业界的标准(何况还没达成共识),用[xxx][/xxx]表示标记,当中的是内容,一样也是xml。

解决方案 »

  1.   

    想省事一点就用数据库,自己不必关心文件操作,建议用ACCESS。
    再省事一点就是用现成的软件,不用自己做。呵呵。
      

  2.   

    人家是当练习,又不是想拿去赚钱。
    想做就给自己增加难度。
    单这个foxmail就涉及了多线程,socket,文本数据库,加密解密,格式转换...
    不知道bborn现在读到大二没有,清华的那本数据结构看了没有,参照其中的索引文件结构自己定个数据结构就可以了。
    另外有个api函数SetFilePointer,可以定位文件指针。
    *******************************************************************
    而xml数据库就是html文件的扩展,<xxx>aaaa</xxx>,zxx表示标记,如<html></html>,<body></body>,aaa是这个标记的内容。
    我举个例子(我也没完全按照xml的标准,自己用方便直观就可以)
    <id key=1 move=3235 delete=1>我发给你的程序收到了没有</id>
    id表示标识的是信件标题,主关键字是1,文件指针从文件头开始位移3235个字节,delete=1表示已被删除,信件标题是“我发给你的程序收到了没有”。
    只是个简单的例子,至于索引和数据是放在不同的文件还是相同的文件看你方便了。
      

  3.   

    谢谢楼上的 我下半年大二 还是先自己看吧
    你能帮我推荐一本好的数据结构的书吗?关于xml 我只是听说过
    但不知道在个人电脑上能用这个来保存数据推荐好书看吧 谢了
      

  4.   

    xml用于个人电脑是不合适,练练手吧!我觉得xml将来一定大有前途,不过速度不敢恭维,网络数据库能统一的尽量统一吧!
    数据结构清华那本书不错。我还是那句话,计算机专业的专业课抓抓紧,一切ok。不用专门去考什么证什么证,证是给别人看的,自己有多少墨水自己掂量得出。
    编邮件收发程序一定会接触到socket,劝你按照底层通讯完成,不要用现成的,你知道将来是在windows下,还是linux/unix下编程?
    socket熟了,再知道些操作系统的漏洞,就可以做黑客了(我就是冲着黑,死命拼socket的)。
    另外有些记者真是技术盲,说某某病毒是什么自带邮件发送引擎,真是笑死人了。还有就是夸大蠕虫病毒的可怕性,有的时候真懒得去反驳。
    *******************************************************************
    东西接触多了才知道现在再怎么厉害的软件技术,比如soap,xml,com,webservice,走得都是大学计算机专业课教的基础,大型机的分布式运算也一样。技术就摆在那里,就看你能否实现它,效率是多少,可扩充性有多大。准确的说就是整体性的考虑,单个技术没用。你看微软多厉害,多庞大,还不是照出bug(outlook和foxmail比,差多少,我真为微软丢脸)。
    *******************************************************************
    有一次,上海的媒体报道什么复旦大三学生开发的邮件收发程序比微软的outlook快多少,如果在宽带网上可能更快。我真是欲哭无泪,微软它蠢,它的outlook要安全性验证,要用com减慢程序的运行,那是它的考虑,记者起什么哄。
    而netants的构思是我遇到的几个软件中最有想象力的,我不知道最早是谁想出的,把支持断点续传的文件分段下载,就像911撞大楼,特有创新意识。
      

  5.   

    呵呵 你的比喻真是幽默 中国人的想象力看来用的还是地方
    foxmail的bug也很多 我觉得比oe还多
    在邮件软件中我最欣赏日本的becky
    非常不错关于数据库我很多弄不懂 
    所以想学学看
    xml我找了本书先看
    不过是用在网络上的 我怕我没有什么机会去实践用socket来编程 
    我看了一些 好难
    我想我还是学些基础的吧
    c语言我才学了半学期
    c++还处在懵懂状态
    路漫漫
    还请你多指教了能帮忙推荐些书看吗?
    我觉得找到一本好书真的可以起很大的作用
    另外
    问个有些烦的问题
    学底层的东西
    还是用c++学好吗?
    其实讨论用哪些语言很不爽
    但是也是有必要的吧
    我看vc开发程序比delphi慢很多啊?
      

  6.   

    做黑客光是socket是不够的,好好研读一下RFC
      

  7.   

    rfc的英文很难懂啊
    很少有中文的
      

  8.   

    对于windows来说,只要知道互相之间的通讯就可以了,比如GET,HEAD,TYPE A...
    在linux/unix下,我们可以对整个ip包进行重写,这时候的自由度就大多了.
    rfc是针对linux/unix的,如果要在windows下重写ip包,可有点麻烦,不过还是有办法的.
      

  9.   

    to laozi(老子) 能否告知你的邮箱看见我给你发的消息没?
      

  10.   

    呵呵.我也要做个邮件程序!张小龙谈如何写E-mail软件 
    作者:  评价:  上站日期:  
    内容说明:  
    来源:  --------------------------------------------------------------------------------  《新潮电子》的编辑向我约稿,而我一向都是懒得写文章的,但编辑说是写关于怎样写邮件软件的,因为很多读者对开发邮件程序感兴趣。我想这倒比其他内容好写些,因为开发foxmail的缘故,毕竟积累了一些想法。但因为是面向大众的文章,技术性又不能太强,因此主要从概念上说说我自己的看法。
      首先要确定的是你要开发的邮件软件的应用对象和范围。分为三类吧,第一类,你的目标是通用的E-mail软件,就像foxmail, outlook一样。第二类,是E-mail的一些分支,如邮件监测器(POP3 Monitor,自动检测服务器上是否有邮件到来),批量邮件发送器(bulk emailer)等。第三类,是将E-mail应用到某些软件项目中,比如,你可能须要在一个MIS项目中用E-mail来传输数据,或在Web上提供发送邮件的功能(如贺卡)。
      关于三种类型,他们的实现方法和难度是不一样的。为了讲解方便,我们将上面三种类型称为A类,B类和C类。其中A类因为用户的覆盖面最广,须要考虑的因素最多,对程序的稳定性和适应性要求也最大,B类次之。
      下面的内容主要集中在邮件相关知识上。我要强调的是,一个邮件软件,更多的是非网络的处理。因为邮件软件不同于其它的网络应用,邮件软件要更贴近用户,实际上是一个日常办公应用。事实上,在Foxmail中,网络部分的处理可能只用了10%的精力。一、了解TCP/IP网络编程方法
      对于A类和部分B类应用,要求你自己编程实现基于TCP的邮件通讯。因此对TCP/IP编程的理解是必要的。而且一旦你掌握了TCP/IP的编程方法,你可以完成更多的网络程序,比如FTP, HTTP等。这里没法深入去讨论,因为这是一本书或几本书的内容。因此只能向你推荐我自己觉得必看的书目: 
    1.Internet的经典教材:
    书名:Internetworking With TCP/IP。作者:Douglas E. Comer。出版:Prentice Hall。
    中译本:《用TCP/IP进行网际互连》。出版:电子工业出版社。
    这套书共有三卷。清华大学出版社在国内发行英文版,因为价格比国外买便宜,前不久我还在广州买了一套寄给在美国念书的朋友(邮费比书还贵)。 
    2.一本很好的关于Winsock编程的书
    书名:《Internet编程》,电子工业出版社,1996。
    这是一本翻译过来的书,详细讲解了TCP/IP编程的概念和方法。其中对Unix socket和Windows socket编程的区别,以及Windows下socket的同步和异步,消息和多线程等概念讲解透砌。1996年我就是因为看了这本书,萌发了写foxmail的想法。二、了解电子邮件相关的标准
      对A类和B类应用,有必要非常熟悉网络协议,特别是与E-mail相关的RFC协议。RFC是Request for Comments的简称,Internet的绝大部分协议都是通过RFC的方式提供与更新的,比如我们常用的HTTP协议,就是由RFC2068 定义的。与E-mail相关(通讯,邮件格式,附件编码等)的协议有很多,以下是必须要看的RFC:
    RFC 821 (SMTP,简单邮件传输协议,定义了发送邮件的机制)
    RFC 822 (邮件格式定义)
    RFC 1725 (POP3,邮局协议版本3,定义了从POP3服务器收取邮件的机制)
    RFC 1521 (MIME标准)
    RFC 1522 (MIME 标准2)
      在这里,因为篇幅关系,没有办法深入讲解,因此只能由读者自己查阅这些文档。这些文档可以在Internet上很多站点找到,比如http://www.cis.ohio-state.edu/htbin/rfc/INDEX.rfc.html就列出了全部的RFC文档。
    对于C类应用(和部分B类应用),可以不去关心这些协议,因为你可以采用一些现成的控件来完成邮件的功能,封装得好的控件可以完全屏蔽掉这些实现细节。三、非网络的因素
      如前面所说的,你须要投入更大的精力到其它非网络的部分的开发中,因为作为一个应用软件,你要细致地处理每个细节。但这里说的并不是各个特性细节的堆砌。比如对于A类应用,你须要做好合理的系统设计,然后对设计中的每个大模块找到好的实现方法。比如电子邮件的存储,我称它为邮箱文件系统,事实上是个基于索引的变长记录系统。如收件箱,由两个文件组成,In.ind是索引文件,记录了每个邮件的摘要信息(发件人,主题,日期等),更重要的是,每个邮件在数据文件中的位置;数据文件是in.box,简单地记录了每个邮件的原始内容。邮箱文件系统的原理并不难理解,难的是要保证其非常高的稳定性,因为邮箱文件的设计错误将直接导致邮件的丢失。
      就像浏览器的开发一样,浏览器的HTTP网络协议处理并不复杂,但HTML的显示要复杂得多。电子邮件也一样。但是在B类和C类应用中,问题比较简单,因为是特定的功能实现就可以了。四、Winsock的消息和多线程
      对Winsock的异步机制的理解非常重要,对多线程的理解也很重要。很多人以为多线程可以解决任何问题,我想并不全是这样。Windows下的socket编程与Unix下的一个很大差别是,你可以将socket的事件与Windows的消息机制紧密联系起来,写出高效率的Winsock程序,这有赖与对Windows和Winsock的理解。如果须要用到多线程,须要周密考虑好线程同步问题,这不仅仅是对线程的理解,可能在规划的时候,就要考虑线程同步问题来。比如你有一个线程在从发件箱中发邮件,一个线程在接收邮件,还有一个线程(主线程)在显示或删除邮件,这些线程可能同时对同一个邮箱文件进行操作,如果不同步的话,后果将是邮箱文件被破坏。
      采用Winsock的基于消息的异步机制是个很好的选择,这样只有当有网络消息到来时,Winsock才发消息通知程序处理,程序不会停顿在等待或循环中。利用异步机制,须要构造好一个“状态机”,即你要让程序清楚知道目前处理到什么阶段了,当网络(服务器)需要数据时,程序才能知道下一步要发送什么数据出去。五、开发工具的选择
      对于A类和部分B类应用,我想Visual C++和Delphi是比较好的选择。我个人在开发Foxmail的时候决定用Delphi,是因为它可以帮我省去许多设计界面的时间。而且Delphi具备C++的绝大部分优点,如真正的面向对象,运行的效率等,同时具有比C++更容易理解的语法。而且Internet上有许多Component可以参考,我常去的一个Delphi站点是http://sunsite.icm.edu.pl/delphi。
    对于部分B类和C类应用,开发工具的选择面大很多,VC++, Delphi, VB, PowerBuilder,甚至Java等都是考虑的对象,就看你的应用方向了。如果基于现成的控件来做,一般是OCX的形式,OCX可以在绝大多数开发平台上使用。
      对于开发工具,我还想说的是,开发工具并不是最重要的,因为任何一种工具,必须用好它,才能发挥它的功能,而用好一个工具的基本点,是对编程的理解和掌握,与开发工具无关。六、要不要熟悉TCP/IP和邮件协议?
      看了上面的介绍,可能很多读者会问,如果从头去学习TCP/IP编程,并掌握关于email的协议,会用去大量的时间,有没有更快速的方法呢?我想,同样得看你的应用目标是什么。比如,你只是想在一个MIS项目中包含电子邮件功能,当然没必要从底层开发所有的东西,你可以借助一个商业(甚至免费)的OCX来完成邮件功能。比如Delphi中,就包含了POP3和SMTP的OCX,可以直接应用。有了这些OCX,为什么还要自己从头开发呢?因为商业的OCX并不能保证它是功能齐全和稳定的,特别对于email来说,有许多非标准(或准标准)的因素存在,比如汉字的编码方法,这些国外出的OCX一般都没有考虑到。而且从稳定性上来说,email软件须要适应不同的网络和服务器,只有自己开发的,才能不断地改进。Internet上甚至还提供一些免费的源代码。这些代码只能作为参考,不要指望它们能解决所有问题。七、小结
    我担心读者看了上面的介绍,可能有些失望,因为只是些指导性的内容。但没办法,因为任何一个细节的深入探讨都将超出本文的篇幅,我也不想以偏概全。另外你可能觉得工作量太大,不过,如上面说的,如果你只是将邮件功能应用到一个小范围,是不需要这样专注的,但你对TCP/IP和E-mail标准的理解是有帮助的,而且也有助于你对其它网络协议的理解,如HTTP, FTP等