1. 程式人生 > >Get a single file from an FTP server.

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/",
	NULL
  };

  curl_global_init(CURL_GLOBAL_DEFAULT);

  curl = curl_easy_init();

  if(curl) {

	curl_easy_setopt(curl, CURLOPT_URL,
						"ftp://user:
[email protected]
/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; }

然後通過虛擬機器裡面的安裝的linux系統ping主機,如果能夠ping通 說明linux能夠訪問由主機(自個電腦)搭建的伺服器,現在需要你的虛擬機器下的linux系統要有兩個環境,

一個是gcc 方法如下:

一個是libcurl  方法如下:

安裝好之後就可以通過vim編寫c++程式碼了,這個程式碼主要功能是通過程式碼從FTP伺服器上下載單一檔案,主要要考慮到檔案下載後的儲存位置和名字,檔案的下載路徑和伺服器的賬號及密碼。https://curl.haxx.se/libcurl網站程式碼開源,這只是一個簡單的例子,大家可以借鑑學習。