私のC++プロジェクトでlibcurl 7.37.0を使用して、FTPプロトコルでリモート通信しています。C++ Libcurl:curl_easy_performがLinuxシステムからWindowsリモートシステムにファイルを転送するときにエラーコード28を返しました
以下はコードです。私は、ファイルのアップロードがエラーコード28による失敗して観察した
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);
何回も。
CURLE_OPERATION_TIMEDOUT(28) 操作のタイムアウト。指定されたタイムアウト時間は、条件に従って達しました。
私は、デフォルトではそれが価値だ、私たちは、タイムアウト値を設定するCURLOPT_TIMEOUTを使用することができます知っているようになった検索の多くを行った後、コード内の任意のタイムアウトを設定していない、それはまではタイムアウトしない0です私はそれぞれの操作を完了しました。私の場合、私はファイルアップロード操作を実行しました。
Wiresharkのログを通過した後、私は、データ転送ポート20から開始されたときに、私はlibcurlのが原因で、そのリモコンの、ポート21に任意の既知の理由なし[FIN、ACK]を送信見ることが観察された応答コードを送信します。 426(transfer aborted)をlibcurlに渡し、アプリケーションに28のエラーコードを返します。
wiresharkのトレースがある画像を確認してください。
ソースIP:18 &送信先IP Linuxサーバである:36この問題はランダムに起こっている
Windowsのリモートシステムです。 誰でもこの問題を回避する理由を&で知ることができますか?
これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-代わりに)。 - [レビューから](レビュー/低品質の投稿/ 17926223) –
@ TheDictatorこの回答はあまり詳しくは書かれていませんが、有効な解決策が含まれている可能性があります。他の回答がないときにこれを削除することはお勧めしません。 – Melebius