我开发了一个使用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);
客户与客户之间建立了连接。服务器。在一段时间后发送文件时连接超时错误显示在服务器&在客户端应用程序转到无响应。
另一种情况是我连接客户端&服务器为正常使用IdIOHandlerStack1(在客户端)和服务器端不分配任何处理程序。文件传输成功,没有任何问题。
我正在使用Delphi2010& Indy10.5.5,DLL版本是0.9.8.18
任何人指导我
答案 0 :(得分:0)
没有WriteStream()
方法,而TStream
方法存在Write()
重载。
您告诉Write()
将流大小作为64位整数发送,但您没有告诉ReadStream()
读取流大小,因此您可能已阅读完整的64位文件预先使用ReadInt64()
确定尺寸,对吗?
此外,10.5.5是Indy的过时版本。目前的版本是10.5.9。 Try upgrading以确保您拥有所有最新的错误修复程序等,然后报告您是否还有问题。