尝试使用MultiPart上传到Amazon S3时,使用C ++ Builder XE5中的CloudAPI获取错误10054和10053

时间:2014-10-10 01:25:32

标签: delphi amazon-s3 c++builder winsock vcl

我使用C ++ Builder XE5中包含的CloudAPI函数,一直试图使用Amazon S3分段上传技术。

当调用TAmazonStorageService.UploadPart时,我总是会在稍微暂停(可能是发送字节所需的内容)后得到套接字错误10054或10053.我尝试过使用HTTP和HTTPS,没有区别。

我可以使用TAmazonStorageService.InitiateMultipartUpload正确使用UploadId,使用UploadObject上传工作正常,所以显然连接和设置工作正常,但是这些调用会产生套接字错误。

知道在哪里看?我还没有找到使用此CloudAPI上传Mutlipart的示例:我所看到的是单部分上传(可以正常上传)。

1 个答案:

答案 0 :(得分:1)

10054(又名&#34; connection reset by peer&#34;)可能意味着远程主机对客户端发送的数据不满意并且拔掉了插头&#34;。< / p>

  

这通常会导致(......)远程主机使用硬关闭。   如果由于连接断开,也可能导致此错误   保持活动活动在一个或多个操作时检测到故障   正在进行中。

10053是一个类似的问题 - 也可能是由客户端发送的数据中的协议错误引起的:

  

已建立的连接已被主机中的软件中止   计算机,可能是由于数据传输超时或协议   错误。

缩小问题来源的两个建议:

  • 插入HTTP代理(例如Fiddler2)来捕获和查看HTTP流量,或者 - 如果库基于Indy - 使用Indy Interceptor组件记录HTTP数据

  • 使用以不同语言编写的工作客户端实现(例如C#)来验证多部分是否适用于您的特定配置,如果有效,请将其HTTP通信与Delphi版本中的HTTP通信进行比较