0

SSLを使用してTCP/IPコンポーネントを使用してファイルクライアントをサーバーに送信するための1つのアプリケーションを開発しました。

サーバー側で大きなファイルを送信するときに接続がタイムアウトしたというエラーが発生しました

サーバーサイド(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です。

誰もが私に案内します

4

1 に答える 1

0

WriteStream()メソッドはありません。代わりTStreamに、メソッドのオーバーロードがあります。Write()

Write()ストリーム サイズを 64 ビット整数として送信するように指示していますがReadStream()、ストリーム サイズを読み取るようには指示していませんReadInt64()

また、10.5.5 は Indy の古いバージョンです。現在のバージョンは 10.5.9 です。 アップグレードを試みて、最新のバグ修正などがすべて適用されていることを確認してから、まだ問題がある場合は報告してください。

于 2012-10-16T19:20:34.817 に答える