互联网上有台服务器,有固定IP,
上面有sql server数据库,还是ftp服务器客户机有多台,要拨号上网,
连接sql server数据库,读取某个表,这个表是 客户需要下载的文件清单,里面是对应的ftp地址,
客户机根据文件清单从ftp下载文件。难点:客户机 无人值守,需要定时不断地从sql server读取下载清单,这个下载清单的内容会不断增加(即ftp地址表),
因为是拨号上网,所以可能不稳定,需要在数据库连接断开时,重连数据库;ftp连接断开时,重新连接ftp
请问各位大侠,这个程序好做吗?
上面有sql server数据库,还是ftp服务器客户机有多台,要拨号上网,
连接sql server数据库,读取某个表,这个表是 客户需要下载的文件清单,里面是对应的ftp地址,
客户机根据文件清单从ftp下载文件。难点:客户机 无人值守,需要定时不断地从sql server读取下载清单,这个下载清单的内容会不断增加(即ftp地址表),
因为是拨号上网,所以可能不稳定,需要在数据库连接断开时,重连数据库;ftp连接断开时,重新连接ftp
请问各位大侠,这个程序好做吗?
如果不考虑安全性。客户端程序可以直接连数据库和ftp,用定时器控制即可。
关于断网重连问题,因为连数据库和ftp都属于TCP通信方式,断后重新登录,判断超时即可。如果考虑安全性。
要用webservice作为中间层,客户端不直接访问数据库。
由中间层返回下载清单列表。
所以TADOConnection必须放在一个线程里面吧;ftp下载的功能 也必须放在一个线程里面。
定时器可以吗?据说定时器的消息 经常丢失啊,不过丢失也关系不大。
下载的文件如果很大,还没下载完,sql server里面可以又多了ftp下载任务,
必须从sql server读出这些下载任务,然后追加到“等待下载列表”里面。要不要线程同步和互斥啊?多谢各位大侠的帮忙啊!多线程不太熟,郁闷中
用连接数据库的线程做计数器每次读取成功则启动下载线程,
既然用了定时器那么下载肯定不是即时的,每次读取为一批,即便是期间加入了新的元素那是下一批的任务了
但像楼主说的如果文件很大,而你的客户端连接不稳定,可能是不是研究一下断点下载才是你这个项目真正要考虑的
或者通过一个命令行的ftp客户端工具,程序复制根据ftp地址生成 调用ftp客户端工具下载的bat
下载文件这个功能,要不要一个线程?当前下载列表的文件还没下载完,又有新的下载任务下达时,
新的下载任务列表要追加到 当前下载列表中,这个动作 要不要进行线程同步和互斥?
谢谢各位大侠啊!!!
是否多线程,看速度要求,一般串行简单些新的下载任务下达?如果串行,你没下载完,不会去取asp页面,就不涉及追加
要不要 把idhttp 封装在一个 TThread里面啊?
谢谢各位大侠啊!!!
如果想并发收取,是需要把idhttp给线程使用