QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4764|回复: 19

我做的multiget下载器

[复制链接]
发表于 2006-8-15 17:44:52 | 显示全部楼层 |阅读模式
前个月写了个下载器。最近加上了界面。主要模仿flashget。这里是第一次发布的测试版。

主要功能:
1。ftp,http协议支持。以后高兴了也许加个rtsp。
2。下载线程数动态调整。不停止任务增加或减少线程。
3。下载任务动态调整。后添加的任务上移可以自动开始。被移下的任务自动暂停。反之亦然。
4。动态任务片。线程结束一个任务后。自动开始新的任务片。
5。目前设置最多5个任务同时运行。一任务最大10线程。暂不支持代理和选项设置。正式版也许会加入。
6。支持大文件下载,测试过5G的文件。
7。简单文件分类管理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2006-8-15 17:47:01 | 显示全部楼层
这里是静态编译的可执行文件,可运行在所有X桌面上,没有库依赖。

        

附件贴不上来,可能是太大了。有800多K。自己编译吧。
回复

使用道具 举报

发表于 2006-8-15 20:41:36 | 显示全部楼层
不错不错,+U+U   
回复

使用道具 举报

 楼主| 发表于 2006-8-16 16:09:31 | 显示全部楼层
昨天在sf申请了项目,今天批下来了。
给了个主页是http://multiget.sourceforge.net/
没空去做界面。单是把文件传上去了。不过sf不建议在自己的主页上放下载。

这个地址是sf上项目的地址,也是正规下载地址。
http://sourceforge.net/projects/multiget
回复

使用道具 举报

发表于 2006-8-16 17:16:05 | 显示全部楼层
不错哈
回复

使用道具 举报

发表于 2006-8-20 14:23:22 | 显示全部楼层
建议加入镜像搜索的功能
回复

使用道具 举报

发表于 2006-8-21 15:48:24 | 显示全部楼层

MultiGet在Ubuntu下的编译

试了一下,非常不错。原来用d4x总担心下载半道错误退出,这下有一个不错的下载软件了。我使用的是Ubuntu Dapper(UTF-8 ),在编译过程中发现几个字符串转换的错误,应该都是在UTF-8编码下编译带来的问题,请改正。

1. mainframe.cpp中多处写了类似 wxString( "...\tF1" ) 这样的代码,编译时是通不过的,应改为 wxString( wxT("...\tF1") )。这个错误在0.2.4中比0.2.0中多了许多。
2. mainframe.cpp的OnDropURL()中,url.mb_str(wxConvLocal)返回的是wxCharBuffer类型,无法自动转换为std::string类型。建议该函数代码改为:
~~~~~~~~~~~
std::string str( url.mb_str( wxConvLocal ) );
CUrlParser upar;
if ( upar.SetUrl( str ) < 0 ) return;
AddNewTask( str );
~~~~~~~~~~~
3. newtaskdlg.cpp的122行存在同样的问题,给出另外一种修改方法:
旧:if ( upar.SetUrl( m_sUrl.mb_str(wxConvLocal) ) < 0 )
新:if ( upar.SetUrl( (const char *) m_sUrl.mb_str(wxConvLocal) ) < 0 )
经过以上修改后,可以顺利地在我的Ubuntu Dapper(UTF-8 )+GCC 4.0.3+wxWidgets 2.7.0上编译和运行。
回复

使用道具 举报

发表于 2006-8-21 16:05:22 | 显示全部楼层
将filemanage.cpp中的fopen64/ftruncate64替换为fopen/ftruncate之后,以上代码在Mac OS X 10.4(Tiger) + GCC 4.0.0 + wxWidgets 2.6.3下可以顺利编译,但无法运行。建议多测试一些平台,直接做成跨平台的程序(反正都已经使用了wxWidgets,何必再省这一点力气呢)。试了一下,Windows平台下的兼容问题还是挺多的,没有再进行深入修改测试。
回复

使用道具 举报

发表于 2006-8-21 16:17:55 | 显示全部楼层
再有一个建议,将所有的字符串用wx自带的国际化方式来处理,就是用_()替代wxT(),以后就可以用poedit来处理程序中的所有字符串的翻译了。建议趁着现在代码还不多尽快改,否则到以后会很麻烦的。
回复

使用道具 举报

发表于 2006-8-21 20:31:03 | 显示全部楼层
我的为什么不能用!!!!
[sihan@localhost sihan]$ uname -a
Linux localhost.localdomain 2.4.22-1.2115.nptl #1 Wed Oct 29 15:31:21 EST 2003 i686 athlon i386 GNU/Linux

[root@localhost source]# ./MultiGet
./MultiGet: error while loading shared libraries: libXinerama.so.1: cannot open shared object file: No such file or directory

就是下载页面上面的那个,出来解压直接是一个可执行程序.
回复

使用道具 举报

发表于 2006-8-22 09:19:21 | 显示全部楼层
Linux localhost.localdomain 2.4.22-1.2115.nptl #1 Wed Oct 29 15:31:21 EST 2003 i686 athlon i386 GNU/Linux
呵呵,系统有点老啊,不过错误很明确啊,缺少动态连接库libXinerama.so.1,找找libXinerama,给装上一份应该就可以了吧?!wxWidgets本身是需要这个库的。
回复

使用道具 举报

发表于 2006-8-22 15:23:34 | 显示全部楼层
不错不错,wxWidgets就是强的!!
回复

使用道具 举报

发表于 2006-8-24 19:26:28 | 显示全部楼层
请问楼主是用哪一个IDE开发的?谢谢!
回复

使用道具 举报

发表于 2006-8-24 19:36:54 | 显示全部楼层
支持原创!
支持优秀原创作品!
回复

使用道具 举报

 楼主| 发表于 2006-8-24 23:58:48 | 显示全部楼层

Re: MultiGet在Ubuntu下的编译

[quote:6da6adf58b="xjluo"]试了一下,非常不错。原来用d4x总担心下载半道错误退出,这下有一个不错的下载软件了。我使用的是Ubuntu Dapper(UTF-8 ),在编译过程中发现几个字符串转换的错误,应该都是在UTF-8编码下编译带来的问题,请改正。

1. mainframe.cpp中多处写了类似 wxString( "...\tF1" ) 这样的代码,编译时是通不过的,应改为 wxString( wxT("...\tF1") )。这个错误在0.2.4中比0.2.0中多了许多。
2. mainframe.cpp的OnDropURL()中,url.mb_str(wxConvLocal)返回的是wxCharBuffer类型,无法自动转换为std::string类型。建议该函数代码改为:
~~~~~~~~~~~
std::string str( url.mb_str( wxConvLocal ) );
CUrlParser upar;
if ( upar.SetUrl( str ) < 0 ) return;
AddNewTask( str );
~~~~~~~~~~~
3. newtaskdlg.cpp的122行存在同样的问题,给出另外一种修改方法:
旧:if ( upar.SetUrl( m_sUrl.mb_str(wxConvLocal) ) < 0 )
新:if ( upar.SetUrl( (const char *) m_sUrl.mb_str(wxConvLocal) ) < 0 )
经过以上修改后,可以顺利地在我的Ubuntu Dapper(UTF-8 )+GCC 4.0.3+wxWidgets 2.7.0上编译和运行。[/quote]

几个问题确实存在,不过在我的系统上不报错,很奇怪。我用的是2.6.3的版本,2.7等稳定了再说。
谢谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 08:27 , Processed in 0.047356 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表