完美者(wmzhe.com)网站以软件下载为基础,改版后的网站对功能性板块进行扩充,以期能够解决用户在软件使用过程中遇见的所有问题。网站新增了“软件百科”、“锦囊妙技”等频道,可以更好地对用户的软件使用全周期进行更加专业地服务。
一款特殊的支持P2P分布式FTP的FTP服务器软件。FtpAnywhere是采用c/c++从头开发的一套网格FTP/P2P软件,从协议底层直接支持网格传输,大约20万行代码,包含了中心服务器端软件,服务器版节点软件,桌面版节点客户端软件,远程管理软件,集群监视软件等组成的软件包,它兼容标准FTP协议,并实现了标准FTP的网格化扩展,支持多种传输模式和传输协议,是替代传统FTP/BT/电驴等软件,实现网格应用的好选择。"锦囊妙技"栏目是聚合全网软件使用的技巧或者软件使用过程中各种问题的解答类文章,栏目设立伊始,小编欢迎各路软件大神朋友们踊跃投稿,在完美者平台分享大家的独门技巧。
本站文章素材来源于网络,大部分文章作者名称佚失,为了更利于用户阅读和使用,根据需要进行了重新排版和部分改编,本站收录文章只是以帮助用户解决实际问题为目的,如有版权问题请联系小编修改或删除,谢谢合作。
软件大小:13.28 MB
我没用过,下面的是在网上拷的集分布式Ftp与P2P服务器功能于一身,并支持分布式扩展计算,支持符合国际标准的Ftp列表和下载指令,支持UPNP网络映射功能和强大的代理传输功能,支持专有的超级FTP传输协议和 VLink 2.1专有协议;集FTP,超级FTP,P2P,下载,上传,检索和分布式联合检索,断点续传,聚合传输,多线程,单连接多次复用,虚拟静态目录,TCP层防火墙,ODBC数据库,远程管理等诸多特点,可以导出标准URL与WEB下载连接进行捆绑和跳转,配合第三方软件,还可以直接实现基于P2P的分布式在线VOD播放;直接实现了基于多点连接的聚合传输功能 [网格];自带专有客户端软件VLink,同时还可以支持Microsoft IE浏览器, Cute ftp , leap ftp , 迅雷,wget,curl等众多第三方客户端软件登录并下载资源;真正的所见即所得,本软件特别适合宽带网络如城市宽带网,校园网络,公司内网等环境下应用。
可以修改。 解压缩它的源代码,转到子目录/src/engine下,打开ftpcontrolsocket.cpp文件,这个文件就是FileZilla用来支持标准FTP指令的核心,需要改造的是它的列表模式以及对PASV反馈的分析代码 [包括IPV6下的EPSV指令,但是暂时因为没有IPV6,所以没必要动它],改造它的PASV解析代码 让FileZilla兼容FtpAnywhere bool CFtpControlSocket::ParsePasvResponse(CRawTransferOpData* pData) { // Validate ip address wxString digit = _T("0*[0-9]{1,3}"); const wxChar* dot = _T(","); wxString exp = _T("( |//()(") + digit + dot + digit + dot + digit + dot + digit + dot + digit + dot + digit + _T(")( |//)|$)"); wxRegEx regex; regex.Compile(exp); if (!regex.Matches(m_Response)) return false; pData->host = regex.GetMatch(m_Response, 2); int i = pData->host.Find(',', true); long number; if (i == -1 || !pData->host.Mid(i + 1).ToLong(&number)) return false; pData->port = number; //get ls byte of server socket pData->host = pData->host.Left(i); i = pData->host.Find(',', true); if (i == -1 || !pData->host.Mid(i + 1).ToLong(&number)) return false; pData->port += 256 * number; //add ms byte of server socket pData->host = pData-> host.Left(i); pData->host.Replace(_T(","), _T(".")); if (m_pProxyBackend) { // We do not have any information about the proxy's inner workings return true; } const wxString peerIP = m_pSocket->GetPeerIP(); if (!IsRoutableAddress(pData->host, m_pSocket->GetAddressFamily()) && IsRoutableAddress(peerIP, m_pSocket->GetAddressFamily())) { if (!m_pEngine->GetOptions()->GetOptionVal(OPTION_PASVREPLYFALLBACKMODE) || pData->bTriedActive) { LogMessage(Status, _("Server sent passive reply with unroutable address. Using server address instead.")); LogMessage(Debug_Info, _T(" Reply: %s, peer: %s"), pData->host.c_str(), peerIP.c_str()); pData->host = peerIP; } else { LogMessage(Status, _("Server sent passive reply with unroutable address. Passive mode failed.")); LogMessage(Debug_Info, _T(" Reply: %s, peer: %s"), pData->host.c_str(), peerIP.c_str()); return false; } } return true; }