我使用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远程系统
我想知道为什么我们将[RST,ACK]发送到远程以及为什么libcurl没有返回错误代码。有人可以向我解释是否有办法解决这个问题。