如何在c中使用CURL库检查FTP连接?

时间:2014-08-04 09:15:54

标签: c curl ftp libcurl connectivity

我想在c程序中使用curl库检查FTP服务器连接。任何人都可以告诉我如何不使用任何数据传输手段我不想传输任何文件来检查。我想要的是CURLOPT_CONNECT_ONLY选项,它只适用于HTTP,SMTP和POP3协议,不适用于FTP。

卷曲版本:7.24 要求:FTP服务器连接测试。

1 个答案:

答案 0 :(得分:0)

在下面的示例中,只有连接请求将被传递到FTP服务器,如果服务器是可ping的,那么它将给出CURLE_OK返回代码,否则在特定超时(60秒)后给出失败响应。您可以根据http://curl.haxx.se/libcurl/c/的要求设置其他选项。

...
snprintf(ftp_url, BUF_LEN_512, "ftp://%s:%s@%s", uploadConf->username, uploadConf->password, uploadConf->ip);

// Reset curl lib
curl_easy_reset(curl);

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, throw_away);
if (CURLE_OK != (res = curl_easy_setopt(curl, CURLOPT_URL, ftp_url)))
{
    printf("Failed to check ftp url, Error : %s : %d\n", curl_easy_strerror(res), res);
}
curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);

// Connection establishment timeout
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 60);

if (CURLE_OK != (res = curl_easy_perform(curl)))
{
    /* If fail to connect */
}
else
{
    /* If connected succesfully */
}


static size_t throw_away(void *ptr, size_t size, size_t nmemb, void *data)
{
    size_t res;

    res = (size_t)(size * nmemb);

    /* we are not interested in the headers itself, so we only return the size we would have saved ... */
    return res;
}

希望它能帮助大家在c。

中使用libcurl测试与FTP服务器的连接