Get a single file from an FTP server.

#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网站代码开源,这只是一个简单的例子,大家可以借鉴学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值