C ++ libcurl:curl_easy_perform()返回CURLE_OK,但收到响应代码226

时间:2017-07-28 08:17:15

标签: c++ ftp libcurl wireshark

我使用libcurl FTP将文件从linux服务器发送到Windows远程系统。

以下是代码

curl_easy_setopt(CurlSessionHandle, CURLOPT_URL, remoteFileUrl);
curl_easy_setopt(CurlSessionHandle, CURLOPT_UPLOAD, ON);

// Set the input local file handle
curl_easy_setopt(CurlSessionHandle, CURLOPT_READDATA, localFileHandle);

// Set on/off all wanted options
// Enable ftp data connection
curl_easy_setopt(CurlSessionHandle, CURLOPT_NOBODY, OFF);

// Create missing directory into FTP path
curl_easy_setopt(CurlSessionHandle, CURLOPT_FTP_CREATE_MISSING_DIRS , ON) ;

// Set the progress function, in order to check the stop transfer request
curl_easy_setopt(CurlSessionHandle, CURLOPT_NOPROGRESS, OFF);
curl_easy_setopt(CurlSessionHandle, CURLOPT_PROGRESSFUNCTION, progressCb);
curl_easy_setopt(CurlSessionHandle, CURLOPT_PROGRESSDATA, this);

CURLcode Result = curl_easy_perform(CurlSessionHandle);

=============================================== =====================

很少的文件没有传输到远程,但我没有从curl_easy_perform()收到任何错误。这是随机发生的。

我收集了wireshark日志,跟踪显示[RST,ACK]从我们这边发送到远程系统不知道原因和响应代码226是从远程系统发送的,我想我应该收到一些错误来自curl_easy_perform()的代码 而不是CURLE_OK。如果我错了,请纠正我。

请检查有wirehark痕迹的图像。

源IP:82是Linux服务器&目标IP:87是Windows远程系统

enter image description here

我想知道为什么我们将[RST,ACK]发送到远程以及为什么libcurl没有返回错误代码。有人可以向我解释是否有办法解决这个问题。

我上传了成功和失败案例的图片。请检查并让我知道 enter image description here

失败案例,请检查回复arg enter image description here

0 个答案:

没有答案