ソケットを使用して C# で FTP クライアントを作成しています。今、私は次の問題を抱えています。制御接続ソケットを介して FTP コマンドをサーバーに送信すると、応答を受信しようとします。ただし、サーバーがデータを送信するのに遅延が生じることがあります。私の結果は断片的です。
今私のコード:
public byte[] BinaryReceive()
{
byte[] bytes;
using (MemoryStream memoryStream = new MemoryStream())
{
byte[] buffer = new byte[4056];
while (_controlConnectionSocket.Available > 0)
{
int count = _controlConnectionSocket.Receive(buffer, buffer.Length, SocketFlags.None);
memoryStream.Write(buffer, 0, count);
Thread.Sleep(100);
}
bytes = memoryStream.ToArray();
}
return bytes;
}
どうすればこの状況を回避できますか? 現在、回避策として aを実装しましThread.Sleep()
た。しかし、これでは解決できません。
任意の提案をいただければ幸いです。
編集:
問題を解決しました。重要なのは、Available > 0
代わりに使用しないで、返信が終了するのを待つことです。それが機能するより..