当前位置: 首页 > wzjs >正文

项目网appseo关键词优化哪个平台好

项目网app,seo关键词优化哪个平台好,虚拟机安装 wordpress,独立网站建设多少钱/* 利用AI写了一个在fedora系统下的c程序, 实现功能为,先获取ftp指定目录及子目录下的文件名称,然后把本地目录中没有的文件下载下来。 # 安装依赖 sudo dnf install libcurl-devel # 编译 g -o ftp_sync_curl ftp_sync_curl.cpp -lcurl -…

/*

利用AI写了一个在fedora系统下的c++程序,
实现功能为,先获取ftp指定目录及子目录下的文件名称,然后把本地目录中没有的文件下载下来。

# 安装依赖
sudo dnf install libcurl-devel

# 编译
g++ -o ftp_sync_curl ftp_sync_curl.cpp -lcurl -lstdc++fs -O2

*/

#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <fstream>
#include <filesystem>
#include <curl/curl.h>
#include <regex>

using namespace std;
namespace fs = std::filesystem;

// 配置信息
const string FTP_SERVER = "ftp://example.com/";
const string FTP_USERPWD = "username:password";
const string REMOTE_BASE = "/remote/path/";
const string LOCAL_BASE = "/local/path/";

// 用于存储目录列表的结构体
struct FtpFileInfo {
    string path;
    bool is_directory;
};

// libcurl写入回调
size_t write_callback(void* ptr, size_t size, size_t nmemb, string* data) {
    data->append((char*)ptr, size * nmemb);
    return size * nmemb;
}

// 解析FTP LIST输出
vector<FtpFileInfo> parse_ftp_list(const string& list) {
    vector<FtpFileInfo> files;
    // 改进的正则表达式,更准确匹配UNIX风格列表
    regex unix_pattern(R"(^([d-])([rwx-]{9})\s+\d+\s+\w+\s+\w+\s+(\d+)\s+(\w+\s+\d+\s+[\d:]+)\s+(.+)$)");
    
    istringstream iss(list);
    string line;
    while (getline(iss, line)) {
        smatch match;
        if (regex_match(line, match, unix_pattern)) {
            if (match.size() >= 6) {
                FtpFileInfo info;
                // 修正:访问第一个捕获组(文件类型标识)
                info.is_directory = (match.str() == "d"); // 正确比较方式
                info.path = match.str();  // 第5个捕获组是文件名
                files.push_back(info);
            }
        }
        else {
            cerr << "Unmatched line: " << line << endl;
        }
    }
    return files;
}


// 递归获取远程文件列表
void get_remote_files(CURL* curl, const string& path, set<string>& result) {
    string full_url = FTP_SERVER + path;
    string list_buffer;

    curl_easy_setopt(curl, CURLOPT_URL, full_url.c_str());
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &list_buffer);
    
    CURLcode res = curl_easy_perform(curl);
    if (res != CURLE_OK) {
        cerr << "curl failed: " << curl_easy_strerror(res) << endl;
        return;
    }

    vector<FtpFileInfo> files = parse_ftp_list(list_buffer);
    for (const auto& fi : files) {
        if (fi.path == "." || fi.path == "..") continue;
        
        string full_path = path + fi.path;
        if (fi.is_directory) {
            get_remote_files(curl, full_path + "/", result);
        } else {
            result.insert(full_path.substr(REMOTE_BASE.length()));
        }
    }
}

// 获取本地文件列表
set<string> get_local_files() {
    set<string> local_files;
    for (const auto& entry : fs::recursive_directory_iterator(LOCAL_BASE)) {
        if (entry.is_regular_file()) {
            string path = entry.path().string().substr(LOCAL_BASE.length());
            // 统一路径分隔符
            replace(path.begin(), path.end(), '\\', '/');
            local_files.insert(path);
        }
    }
    return local_files;
}

// 下载单个文件
bool download_file(CURL* curl, const string& remote_path, const string& local_path) {
    // 创建本地目录
    fs::path local_dir = fs::path(local_path).parent_path();
    if (!fs::exists(local_dir)) {
        fs::create_directories(local_dir);
    }

    ofstream ofs(local_path, ios::binary);
    if (!ofs) {
        cerr << "Failed to create: " << local_path << endl;
        return false;
    }

    string url = FTP_SERVER + REMOTE_BASE + remote_path;
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ofs);

    CURLcode res = curl_easy_perform(curl);
    if (res != CURLE_OK) {
        cerr << "Download failed: " << curl_easy_strerror(res) << endl;
        return false;
    }
    return true;
}

int main() {
    CURL* curl = curl_easy_init();
    if (!curl) {
        cerr << "Failed to initialize libcurl" << endl;
        return 1;
    }

    // 初始化curl选项
    curl_easy_setopt(curl, CURLOPT_USERPWD, FTP_USERPWD.c_str());
    curl_easy_setopt(curl, CURLOPT_FTP_FILEMETHOD, CURLFTPMETHOD_SINGLECWD);
    curl_easy_setopt(curl, CURLOPT_FTP_USE_EPSV, 0L);  // 禁用EPSV

    try {
        // 获取远程文件列表
        set<string> remote_files;
        get_remote_files(curl, REMOTE_BASE, remote_files);
        cout << "Found " << remote_files.size() << " remote files" << endl;

        // 获取本地文件列表
        set<string> local_files = get_local_files();
        cout << "Found " << local_files.size() << " local files" << endl;

        // 比较并下载缺失文件
        for (const auto& file : remote_files) {
            if (!local_files.count(file)) {
                cout << "Downloading: " << file << "...";
                if (download_file(curl, file, LOCAL_BASE + file)) {
                    cout << "OK" << endl;
                }
            }
        }
    } 
    catch (const exception& e) {
        cerr << "Error: " << e.what() << endl;
    }

    curl_easy_cleanup(curl);
    return 0;
}
 

http://www.dtcms.com/wzjs/283292.html

相关文章:

  • 做公司网站可以抄别人的吗故事式的软文广告例子
  • 品牌网站怎么做百度推广费用可以退吗
  • 公司网页图片seo薪资水平
  • 一个新的网站开发语言网站建设工作总结
  • 苏州建设招聘信息网站全球最大的磁力搜索引擎
  • 做海报裂变的网站seo收录排名
  • 安平谁做网站好个人推广app的妙招
  • 云梦做网站的优势seo搜索推广
  • 张家港城市建设规划局网站西安百度关键词优化
  • 只用js可以做网站吗抖音优化是什么意思
  • 微信小程序插件开发app优化推广
  • 兰州装修公司前十名seo实战指导
  • 邢台网站开发培训学校今日热点新闻头条
  • 如何做网站微信支付专业软文发稿平台
  • 5g空间大吗企业网站十大免费引流平台
  • wordpress 移除 新闻兰州正规seo整站优化
  • 聊城做网站做的不错的网络公司中山360推广
  • 微网站在线制作海外广告投放公司
  • 做动态图网站推广网站的公司
  • 多用户购物商城系统5g网络优化培训
  • 企业网站备案要求疫情防控最新信息
  • 兰州画册设计公司宁波百度seo排名优化
  • 一个服务器可以备案几个网站搜索引擎优化关键词选择的方法有哪些
  • 阆中市住房和城乡建设局网站可以看国外网站的浏览app
  • xyz后缀的网站爱站网关键词查询系统
  • 网站的建设框架亚马逊alexa
  • 公司自己做网站备案品牌互动营销案例
  • 准备建网站该怎么做百度推广公司怎么代理到的
  • 武进网站建设信息种子在线资源搜索神器
  • 网站充值系统怎么做seo快排技术教程