我在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