C#
のサーバーと通信するクライアントを構築していますPython
。クライアントはSocket.send()
メソッドを使用してサーバーにファイルを送信し、スレッドを使用して、次のように複数のファイルを非同期に送信できるようにしますBackgroundWorker
。
private void initializeSenderDaemon()
{
senderDaemon = new BackgroundWorker
{
WorkerReportsProgress = true,
};
senderDaemon.DoWork += sendFile;
}
何らかの条件が満たされると、RunWorkerAsync()
メソッドが呼び出され、ファイルが送信されます
クライアントとサーバーの両方が、転送を開始する前にファイルのサイズを確認します
クライアント側から送信されたファイルの量を追跡できるようにしたい
私はこの概念コードのようなものについて考えましたが、それが機能しないことを知っています
byte[] fileContents = File.ReadAllBytes(path); // original file
byte[] chunk = null; // auxiliar variable, declared outside of the loop for simplicity sake
int chunkSize = fileContents.Length / 100; // we will asume that the file length is a multiplier of 100 for simplicity sake
for (int i = 0; i < 100; i++)
{
chunk = new byte[chunkSize];
Array.Copy(fileContents, i * chunkSize, chunk, i * chunkSize, chunkSize);
// Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
s.Send(chunk);
reportProgress(i);
}
reportProgress(100);
そのコードには明らかな問題がありますが、私がやりたいことを説明するために書いただけです
特定のファイルについてサーバーに送信済みのバイト数を追跡するにはどうすればよいですか? ¿回避策に頼らずにそれを行う方法はありますか? ¿ソケット クラスの他のメソッドを使用する必要がありますか?
ありがとう!