Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TCP直接下载到存储_C#_.net_Tcp_Download - Fatal编程技术网

C# TCP直接下载到存储

C# TCP直接下载到存储,c#,.net,tcp,download,C#,.net,Tcp,Download,我编写了一个程序,最初打算使用C#中的.net TCPClient类在internet上进行非常基本的文本通信。我决定尝试设置一个程序,从一台计算机读取一个文件,将其分解成更小的部分,每个部分发送到接收计算机,然后重新组装并保存在那里。本质上是文件传输 然后我意识到,我传输的所有数据都将进入接收计算机的内存,然后在下一步进入存储器。我现在想知道,这是最好的方法吗?如果数据可以被传输并立即写入到它的存储位置(绕过RAM步骤),这是像Google Chrome这样的程序处理下载的方式吗?或者数据首先

我编写了一个程序,最初打算使用C#中的.net TCPClient类在internet上进行非常基本的文本通信。我决定尝试设置一个程序,从一台计算机读取一个文件,将其分解成更小的部分,每个部分发送到接收计算机,然后重新组装并保存在那里。本质上是文件传输

然后我意识到,我传输的所有数据都将进入接收计算机的内存,然后在下一步进入存储器。我现在想知道,这是最好的方法吗?如果数据可以被传输并立即写入到它的存储位置(绕过RAM步骤),这是像Google Chrome这样的程序处理下载的方式吗?或者数据首先存储在内存中通常有重要的原因吗


顺便说一句,为了清楚起见,让我们都同意“存储”就像硬盘,“内存”指的是RAM。谢谢。

通常的做法是打开
文件流
TcpClient
读取
字节[]
中的数据,并将从
网络流
读取的字节数写入
文件流

以下是一个pseduso示例:

TcpClient tcp;
FileStream fileStream = File.Open("WHERE_TO_SAVE", FileMode.Open, FileAccess.Write);
NetworkStream tcpStream = tcp.GetStream();

byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = tcpStream.Read(buffer, 0, buffer.Length)) > 0)
{
    fileStream.Write(buffer, 0, bytesRead);
}
tcpStream.Dispose();
fileStream.Dispose();