我正在构建一个客户端,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);
该代码存在明显的问题,但我编写它只是为了解释我想要做什么
¿ 如何跟踪一个特定文件已经发送到服务器的字节数?¿ 有什么方法可以在不依赖变通方法的情况下做到这一点?¿ 我应该使用套接字类中的其他方法吗?
谢谢!