征集一个程序思路——决不吝啬分数

clear117 2005-06-09 03:23:44
要做一个程序,实现从A主机到B主机的文件实时传送。
由两个要求:1判断传送文件是否成功传送完毕,不成功的要重传(要考虑断电等其他不可控因素导致的文件 传送中断)
2每次传送最新文件的上一个文件。比如,A主机产生一个最新文件,是第n个文件,那么要传送的文件为它上一个就是第n-1个文件



对于第一点,可以比较传送前和传送后文件大小来判断,但对于第二点一直没想到个好方法实现。
特请教各位大大有什么好主意。对于第一点有更好的方法一经采用也给分数。 顺便说声,是用proc编程
...全文
222 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mostideal 2005-06-10
  • 打赏
  • 举报
回复
关注,,学习。。
chxkchxk 2005-06-09
  • 打赏
  • 举报
回复
学习中....
jixingzhong 2005-06-09
  • 打赏
  • 举报
回复
在程序中建立一个函数,保存有最新的两个文件的名字,

且随着新文件的产生,函数就回调用(事件驱动),

当要进行文件的传送时,查看函数就知道了。
ddc 2005-06-09
  • 打赏
  • 举报
回复
如果文件是其他程序生成,应该比较容易,有各种方法。
如果是ftp等传上来的,可以改变一下策略,先传到另一个目录下,在来个程序,daemon或crontab定时检查,完成移动和传输任务。
ddc 2005-06-09
  • 打赏
  • 举报
回复
写个文件保存上次的文件名,如果上面的传送程序能做个cache保存更好
clear117 2005-06-09
  • 打赏
  • 举报
回复
对于 以上给为给的意见表示感谢 尤其是QXK2001(Q龙) 兄的建议,对于第一个问题的处理方式真是细致周到。
再第二个问题上EmbraceTM() 让我想了个方法,就是按时间顺序把两主机的文件名存储,进行文件名比较,当A机的文件数(n)-B的文件数(m)=2时,把A(n-1)的文件传送。

haocn(好兆头) 说的没法实现,因为批号是不能控制的,没法预测。即使可以预测,对于实时产生的文件(实际就是不知道什么时候产生)对于满足条件传送也没什么用。

现在看了大家的发言又有了新问题,就是对A机文件名的遍历。如果总是在遍历的话太占用资源,有没有什么函数可以在unix的指定路径下产生一个新文件时能发送一个信号signal,这样就不会占用太多资源。


结帖时将为各位送上分数
haocn 2005-06-09
  • 打赏
  • 举报
回复
既然文件名是由日期和传送批号控制
那没有一定的规律吗?不也能判断出文件名吗
clear117 2005-06-09
  • 打赏
  • 举报
回复
按顺序命名文件!! 这样不行,A机上的文件名是定好了的,决没有重复,由日期和传送批号控制。FTP到B主机上时文件名不变。

牛知道 2005-06-09
  • 打赏
  • 举报
回复
对于第一个问题:
1)对于文件接收方来讲(主机B):传送前可是事先传送文件的大小过去,然后再进行文件的传送,如果文件传送完毕后发现字节数不符合,就重新要求发送
2)对于文件发送方来讲(主机A):可以根据发送过去的字节数和文件本身字节数来判断是否重新发送。

第二个问题:
1)如果你是自己生成的文件可以按照固定文件名存储,比如20040101001 这样的2004年1月1日的第1个文件以后处理
2)如果文件是自动生成的,可以遍历目录树,得到最新的两个文件的名称,有次建立的,也就是(N-1新)的文件进行更新。
junguo 2005-06-09
  • 打赏
  • 举报
回复
对阿!按顺序命名文件就可以解决了阿!
EmbraceTM 2005-06-09
  • 打赏
  • 举报
回复
2、你按顺序保存文件名不就行了嘛!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧