我在C#中創建了一個服務器和一個客戶端,用於傳輸文件。但是,傳輸它時會暫停幾秒鐘,然後繼續。我已經上傳到YouTube的視頻演示:http://www.youtube.com/watch?v=GGRKRW6ihLo網絡傳輸暫停
正如你可以看到它的某個時候暫停,然後繼續。
接收機:
using (var writer = new StreamWriter(Path.Combine(_localPath, file.FileName))) {
var buffer = new byte[_bufferSize];
while (file.Transferred < file.Size && _active) {
int read = ns.Read(buffer, 0, _bufferSize);
writer.BaseStream.Write(buffer, 0, read);
file.Transferred += read;
}
writer.Close();
}
發件人:
using (var reader = new StreamReader(file.FilePath)) {
var buffer = new byte[_bufferSize];
while (file.Transferred < file.Size && _active) {
int read = reader.BaseStream.Read(buffer, 0, _bufferSize);
ns.Write(buffer, 0, read);
file.Transferred += read;
}
reader.Close();
}
+1的視頻:-) – 2010-02-19 13:31:05
更多的信息將是很好是一個TCP連接或UDP?它只是通過連接發送原始文件還是有一些協議?我在視頻中沒有看到什麼偏移?它可能是暫停時插入的GC嗎?接口是掛起還是隻寫數據的線程?當你訪問傳輸的百分比是否完成線程安全? – Peter 2010-02-19 13:36:11
TcpClient和TcpListener。我有一個協議。例如,它停留在6,2%和24,03%。界面不會掛起。它支持同時文件傳輸,所以我可以同時傳輸兩個文件,傳輸不會同時暫停。是的,我相信這是線程安全的,因爲這發生在我添加該功能之前。 – ErikTJ 2010-02-19 13:46:55