0

我开发了一个应用程序,用于使用 SSL 使用 TCP/IP 组件将文件客户端发送到服务器。

错误是在服务器端发送大文件时发生连接超时

服务器端 (SSL)

   idTCPServer1.IOHandler := IdServerIOHandlerSSLOpenSSL1;
   OnExecute
      Acontext.Connection.IOHandler.LargeStream := True;
      Acontext.Connection.IOHandler.ReadStream(filestream,Filesize);  // Error is occurred here.
   End;

客户端 (SSL)

   idTCPClient1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
   idTCPClient1.IOHandler.LargeStream := True;
   idTCPClient1.IOHandler.WriteStream(fms,-1,True);

客户端和服务器之间建立连接。一段时间后发送文件时,连接超时错误会显示在服务器和客户端应用程序中,并显示为 Not Responding 。

这里的另一种情况是,当我使用 IdIOHandlerStack1(在客户端)正常连接客户端和服务器时,服务器端没有分配任何处理程序。文件传输成功,没有任何问题。

我使用的是 Delphi2010 & Indy10.5.5,DLL 版本是 0.9.8.18

任何人指导我

4

1 回答 1

0

没有WriteStream()方法,取而代之TStream的是方法的重载。Write()

您告诉Write()将流大小作为 64 位整数发送,但您没有告诉ReadStream()读取流大小,所以大概您已经预先使用 读取了完整的 64 位文件大小ReadInt64(),对吗?

此外,10.5.5 是 Indy 的过时版本。当前版本是 10.5.9。 尝试升级以确保您拥有所有最新的错误修复等,然后如果您仍然遇到问题,请报告。

于 2012-10-16T19:20:34.817 回答