#include <stido.h>
#include <curl/curl.h>
struct FtpFile {
const char* filename;
FILE* stream;
};
static size_t my_fwrite(void* buffer, size_t size, size_t nmemb, void* stream)
{
struct FtpFile* out = (struct FtpFile*)stream;
if(out && !out->stream) {
out->stream = fopen(out->filename, "wb");
if(!out->stream)
return -1;
}
}
return fwrite(buffer, size, nmemb, stream);
}
int main()
{
CURL* curl;
CURLcode res;
struct FtpFile ftpfile = {
//下载位置:/root/curl/push 名称:curl.tar.gz
"/root/curl/push/curl.tar.gz/",
NULL
};
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
//下载路径,账号是:uwer 密码是:123456 ip:192.168.32.1 文件是:pk.txt
curl_easy_setopt(curl, CURLOPT_URL, "ftp://user:123456@192.168.32.1/pk.txt");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
curl_easy_setopt(curl, CURLOPT_WRITEDARA, &ftpfile);
curl_easy_Setopt(curl, CURLOPT_VERBOSE, 1L);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if(CURLE_OK != res) {
fprintf(stderr, "curl told us %d\n", res);
}
}
if(ftpfile.stream) {
fclose(ftpfile.stream);
}
curl_global_cleanup();
return 0;
}
本代码来源:https://curl.haxx.se/libcurl/c/ftpget.html
过程和环境: 用FileZilla Server Interface 和 FileZilla Client 在自己电脑上面安装一个服务器 过程如下:https://blog.csdn.net/chuyouyinghe/article/details/78998527
然后通过虚拟机里面的安装的linux系统ping主机,如果能够ping通 说明linux能够访问由主机(自个电脑)搭建的服务器,现在需要你的虚拟机下的linux系统要有两个环境,
一个是gcc 方法如下:
https://blog.csdn.net/CTO_51/article/details/12857375?utm_source=blogxgwz7
一个是curl 方法如下:
https://blog.csdn.net/wangpanbaoding/article/details/79104609
安装好之后就可以通过vim编写c++代码了,这个代码主要功能是通过代码从FTP服务器上下载单一文件,主要要考虑到文件下载后的存储位置和名字,文件的下载路径和服务器的账号及密码。https://curl.haxx.se网站代码开源,这只是一个简单的例子,大家可以借鉴学习。