B bjtsoft Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-28 #1 我有一个自动更新程序无法实现多线程同时传送,两个客户端同时更新到同一文件时,只有一个用户能更新,望高手给以指正。我的QQ:77858598 发源程序,解决后1000元RMB酬谢
K kkyy Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-28 #2 你是远程更新到本地还是本地更新到远程啊,远程到本地的话搞个FTP或者HTTP更新啊,本地到远程更新同一文件?那当然同时只能有一个可以更新的了,
J japhe Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-28 #6 把远程文件下载到本地来更新是吧 楼主目前的做法是每连接一个客户端,就开启一个线程进行文件传输,当两个线程读取到同一个文件的时候就会出现问题 解决方法: 将需要传输的文件拷贝一份临时文件,名字可以随机起, 如 原文件名A004.bin,可以换成 A004001.bin(针对第一个线程) A004002.bin(针对第二个线程) 等文件传输完成后将生成的临时文件删除。 当然,传输到本地后记得把文件名改回去啊。 如果问题解决了,钱吗就不用给,分记得给就可以了, 这年头,骗点分不容易啊。
把远程文件下载到本地来更新是吧 楼主目前的做法是每连接一个客户端,就开启一个线程进行文件传输,当两个线程读取到同一个文件的时候就会出现问题 解决方法: 将需要传输的文件拷贝一份临时文件,名字可以随机起, 如 原文件名A004.bin,可以换成 A004001.bin(针对第一个线程) A004002.bin(针对第二个线程) 等文件传输完成后将生成的临时文件删除。 当然,传输到本地后记得把文件名改回去啊。 如果问题解决了,钱吗就不用给,分记得给就可以了, 这年头,骗点分不容易啊。
B bjtsoft Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-28 #7 可是文件比较大呀,那不慢死个人了,有这方面经验的高手可看我的源代码改正,解决后RMB立马送上,急呀
W willing66 Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-28 #8 我的MSN:willing66@163.com。 我多线程我有写过,不知道楼主的程序是怎么写的,能不能发把源代码给你看看,再讨论如何?
H happycyp Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-28 #10 提供个思路,客户提交数据时,提交一个时间标识,将时间较新的数据更新后台数据库。
K kkyy Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-28 #12 远程更新到本地啊,其实以现在的网络带宽,多线程不是很必要,重要的是续断续传. 建议可以用wininet.dll的功能,也有封装的,很多便,打开远程文件流,打开本地文件流,seek,然后边读边写就是了.
Q qxhou Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-28 #13 我的程序已实现自动更新. 看程序 http://www.rr263.com 里面有自动更新模块
W wo88786705 Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-30 #15 晕 为什么要这么搞呢 我一向的做法是不管远程还是本地运行的都是一个更新程序 只要版本比本地的高就下载,所以我把要更新的文件都放在他们必须连的服务器 只要我放上去了,随便几个客户端,服务器端都可以同时到这台机上来读取
晕 为什么要这么搞呢 我一向的做法是不管远程还是本地运行的都是一个更新程序 只要版本比本地的高就下载,所以我把要更新的文件都放在他们必须连的服务器 只要我放上去了,随便几个客户端,服务器端都可以同时到这台机上来读取
Q qxhou Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-30 #16 我的程序已实现自动更新. 看程序 http://www.rr263.com 里面有自动更新模块 如果你喜欢本站的自动更新模块,请与我邮件联系
B baiduan Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-30 #17 首先每个更新文件不要很大不要超过400k(不是绝对的,但是这样比较好),每次发送包的大小定义在1k左右(这样不容易出错哦)。 其次建立共享数据池,嘿嘿,其实就是一块一维内存流数组或者二维数组,最好定义一个数据结构。 allfile:array[0..10]of TMyFileRecord; type TMyFileRecord= Record; filename:string; date:array of byte; end; 也可以写成类,加一个读方法。 fileread(index:integer;det):boolean 做校验,用copymemory写入线程的内存空间发送。 注意这里要短小精悍。 在主程INT的时候将本版本的根新数据放到数据池里供每个线程读写。 线程里读写要保证容错,在每个线程里传输是得到文件起始地址date[0] 开始读取,数据索引位置在线程里保证。 基本上就这些吧。 lz看看有没有用。
首先每个更新文件不要很大不要超过400k(不是绝对的,但是这样比较好),每次发送包的大小定义在1k左右(这样不容易出错哦)。 其次建立共享数据池,嘿嘿,其实就是一块一维内存流数组或者二维数组,最好定义一个数据结构。 allfile:array[0..10]of TMyFileRecord; type TMyFileRecord= Record; filename:string; date:array of byte; end; 也可以写成类,加一个读方法。 fileread(index:integer;det):boolean 做校验,用copymemory写入线程的内存空间发送。 注意这里要短小精悍。 在主程INT的时候将本版本的根新数据放到数据池里供每个线程读写。 线程里读写要保证容错,在每个线程里传输是得到文件起始地址date[0] 开始读取,数据索引位置在线程里保证。 基本上就这些吧。 lz看看有没有用。
我 我爱PASCAL Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-30 #18 是不是更新客户端的程序文件? 我以前编了一个客户端程序自动更新程序, 非常好用,客户端每次运行时就自动检测服务器上的客户端程序文件是否比本地新, 如新就自动把更新的文件复制过来,不新的不复制。 程序只有几十K,方便好用,是客户服务器模式自动更新本地客户端软件的很好工具。 在公司一经使用,反响良好,放到网上去,很多网友相见恨晚。 请愿谅我自卖自夸,兄弟我现在手头很紧,源代码+技术支持,价钱200元即可,还可讲点价。
是不是更新客户端的程序文件? 我以前编了一个客户端程序自动更新程序, 非常好用,客户端每次运行时就自动检测服务器上的客户端程序文件是否比本地新, 如新就自动把更新的文件复制过来,不新的不复制。 程序只有几十K,方便好用,是客户服务器模式自动更新本地客户端软件的很好工具。 在公司一经使用,反响良好,放到网上去,很多网友相见恨晚。 请愿谅我自卖自夸,兄弟我现在手头很紧,源代码+技术支持,价钱200元即可,还可讲点价。
寻 寻路 Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-30 #19 我想是因为你在打开文件时,使用的是独占方式,用fmShareDenyRead应该就可以了!
Z zjan521 Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-30 #20 楼主号称已经由别人解决,并且已经支付,大家就不要再操心了. 国人的时间本来就不值钱.