2014-10-10 34 views
0

我一直在嘗試使用Amazon S3分段上傳技術,但沒有運氣,使用C中包含的CloudAPI函數++ Builder XE5。嘗試上傳到使用MultiPart上傳到Amazon S3時出現錯誤10054和10053,在C++ Builder中使用CloudAPI XE5

當我撥打TAmazonStorageService.UploadPart時,我經常會稍微暫停一下(也許發送字節需要什麼),一個套接字錯誤10054或10053.我嘗試過使用HTTP和HTTPS,沒有任何區別。

我可以使用TAmazonStorageService.InitiateMultipartUpload正確獲取UploadId,並且使用UploadObject上傳工作正常,所以顯然連接和設置工作正常,但是使用此調用的東西會產生套接字錯誤。

任何想法在哪裏看?我還沒有找到用這個CloudAPI上傳Mutlipart的例子:我見過的是單部分上傳(這很好用)。

回答

1

10054(又名「connection reset by peer」)可能意味着遠程主機不滿意從客戶端發送的數據並「拔出插頭」。

這通常會導致(... ...)遠程主機使用硬關閉。 如果由於 保持活動活動在一個或多個操作 正在進行時檢測到故障而導致連接中斷,則也可能導致此錯誤。

10053是一個類似的問題 - 並且也可能通過從客戶端發送的數據的協議錯誤引起的:

一個已建立的連接被軟件在主機 計算機終止,可能由於數據傳輸超時或協議 錯誤。

兩個建議來縮小問題源:

  • 插入一個HTTP代理(Fiddler2例如)來捕獲和查看HTTP流量,或 - 如果庫基於印 - 使用Indy Interceptor組件來記錄HTTP數據

  • 使用用不同語言(例如C#)編寫的工作客戶端實現來驗證多部分是否適用於您的特定配置,並且如果它適用,請將其HTTP通信與Delph中的HTTP通信我的版本

+0

謝謝,我會嘗試你對Fiddler2或Indy攔截器的建議。 – 2014-10-10 15:26:34

+0

感謝您的建議@mjn - 使用Fiddler我能夠看到請求存在幾個問題,由於某種原因沒有得到客戶端應用程序,但Indy吞下了他們,或者類似的東西,並且只是返回了10054錯誤。 – 2014-10-10 16:41:22

+0

我現在需要弄清楚爲什麼在傳遞每個零件的MD5時它返回一個SignatureDoesNotMatch。沒有它,它工作正常。 – 2014-10-10 16:42:21

相關問題