Tôi đang cố gắng tải xuống tệp bằng FTP và ở giữa nếu kết nối chấm dứt thì nó sẽ tiếp tục từ nơi nó dừng lại. Vấn đề của tôi là sử dụng đoạn mã sau tôi có thể tiếp tục tải xuống nếu tôi đóng kết nối và sau đó kết nối lại, nhưng nếu tôi làm như vậy tại trang web của máy chủ thì tôi không thể tiếp tục tải xuống và chương trình đi vào trạng thái infinites.Làm cách nào để tiếp tục tải xuống tệp qua FTP bằng Curl trong C?
#include <stdio.h>
#include <curl/curl.h>
/*
* This is an example showing how to get a single file from an FTP server.
* It delays the actual destination file creation until the first write
* callback so that it won't create an empty file in case the remote file
* doesn't exist or something else fails.
*/
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) {
/* open file for writing */
out->stream=fopen(out->filename, "wb");
if(!out->stream)
return -1; /* failure, can't open file to write */
}
return fwrite(buffer, size, nmemb, out->stream);
}
int main(void)
{
CURL *curl;
CURLcode res;
struct FtpFile ftpfile={
"dev.zip", /* name to store the file as if succesful */
NULL
};
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
/*
* You better replace the URL with one that works!
*/
curl_easy_setopt(curl, CURLOPT_URL,
"ftp://root:[email protected]/dev.zip");
/* Define our callback to get called when there's data to be written */
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
/* Set a pointer to our struct to pass to the callback */
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
/* Switch on full protocol/debug output */
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
if(CURLE_OK != res) {
/* we failed */
fprintf(stderr, "curl told us %d\n", res);
}
}
if(ftpfile.stream)
fclose(ftpfile.stream); /* close the local file */
curl_global_cleanup();
return 0;
}
Có thể cho tôi biết làm cách nào để tiếp tục tải xuống nếu kết nối bị đóng bởi trang web từ xa. Bất kỳ trợ giúp sẽ được đánh giá
Cảm ơn,
Yuvi
Có một số thứ như 'AddRange' của http trong ftp không? –
có nó là có nhưng vấn đề của tôi là tôi không thể bắt lỗi nếu kết nối được đóng lại, để biết thêm chi tiết bạn có thể kiểm tra nó ở đây http://curl.haxx.se/libcurl/c/ftpuploadresume.html – Yuvi