关闭

文件传输系统之构架

760人阅读 评论(0) 收藏 举报

  今天准备写一个文件传输系统。它功能主要为传送服务器上的文件。其特性为,P2P加C/S结构。系统中的组成为中央服务器(可含文件服务器)加客户机(文件服务器),采用断点续传的TCP传输方式(分为仿TCP的UDP或TCP传输)。文件传输模式为对等访问,每台机器都可以是文件服务器,或是客户机。
  开发工具:VC++6.0  sp6,MS SQL server7.0或2000
  运行环境:服务器,Windows2000,客户机,Windows98,WindowsXP或Windows2000。
  计算机管理,每个客户机都要向服务器进行注册,其信息包括网关IP,网关端口号,用户机器IP,用户机器端口号。它们作用主要有两点,第一,客户机可以利用其它机器的注册信息进行P2P传输活动,第二,可以判断目标机是否在同一个局域网内(GatewayIP的网络号相同),如果是,则直接用TCP进行Socket连接。用户名只能是唯一标识,网络中也只能存在于一台机器中,不能重复登录。用户所在机器与中央服务器断开或失去连接的时候,服务器将清除相关的IP信息,及设定它为未登录。
  文件的共享,一般要由用户通过操作界面设文件为共享。每台客户机与服务器连接后,都将在中央服务器上进行登录,并将共享的文件在中央服务器上进行注册(本地也有该用户的共享文件信息),并将更新过的文件对服务器进行通告,中央服务器在收到通告后,对该文件进行处理;如果是新增的文件,则该用户拥有计数器加1;反之,如果用户取消了该文件的共享或删除了该文件,则计数器减1,为0时,清除服务器拥有标识。
  文件信息存储,每个文件的记录也将拥有一个页面链接,里面记录着拥有该文件的客户机的信息(包括中央服务器)。下载前,文件名需要在中央服务器的数据库中进行搜索。确定所要下载的文件后,被访问最少的客户机(文件服务器)的优先级将最高,并将该客户机(文件服务器)的IP联接信息返回给访问者客户机,客户机将使用该信息对最终的客户机(文件服务器)进行数据传输操作。每一次的文件传输都可以在中央服务器中记录下来。
  文件也可以放在中央服务器也可以放在客户机上面,但这是在用户量比较少的情况下,中央服务器是一个存放客户机的地址信息的机器,文件传输是P2P的,每台客户机也可以做为文件服务器的,所以在中央服务器处在机器上也可装一个文件服务器。
客户机的文件列表可以按照定好的分类(由管理员维护修改)在共享空间中进行整理,如企业方面的开发部文档,测试部门的测试报告等。
  共享文件信息的管理分为增加、修改和删除三种。
  增加:文档清单分导入和新建两种,新导入的共享文件信息经过确认后可以成批地发向中央服务器,而新建的共享文件信息则单独发到中央服务器上面;中央服务器收到后对相应的文件名进行检查,如果中央服务器已经存在了同名的文件,则在其资源上加一,并将用户信息的指针或链接压入其拥有者的列表中,如果没有该信息,则建立,其它的操作如前面所述。服务器关闭时,将保存它的列表。
  修改:只对每个文件名信息进行单独修改,修改并确认后被发送到中央服务器中;中央服务器收到后对相应的文件名进行检查,如果发现没有相关信息,则新建,操作如增加项所述。
  删除:可以成批或单独删除,并将被移除的文件信息发送到中央服务器中,对相应的文件项进行资源减一操作,并清除所附的链接。
  客户访问服务器文件可以返回排队结果,为了平衡网络访问压力,对于大文件的访问的权限将低于小文件的权限。
  上述为文件系统的最终运行过程,界面信息尚未定义。
  在最终系统交付用户前,提供演示之用时,Demo的设计将分别为两部分,客户界面与数据操作过程(网络传输系统和数据库)。
  界面:服务器只有启动和停止两按钮,为中央服务器。在客户端上显示服务器共享的信息列表,并提供另存的路径方法。
  数据操作过程:一般初始为5个线程进行断点续传,同时只能有一个任务。
   类结构:
   CLCTaskQueue:任务队列;
   CLCTask:任务类;
   CLCTimer:定时器;
   CLCThread:线程类;
   CLCThreadPool:线程池管理;
   CLCCompletionPortSocket:服务器应用;
   CLCDatabaseProcess:数据库的访问方法;
   CLCEmuluatorTCPSocket:仿TCP传输方式的UDP Socket类;

补充:

感谢feifan、fkb 等的提示,上述的文章已经做了相关的修补

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:54988次
    • 积分:714
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:59篇
    • 译文:0篇
    • 评论:3条
    文章存档