C# C语言中的Tcp套接字、文件传输和低速#

C# C语言中的Tcp套接字、文件传输和低速#,c#,.net,sockets,C#,.net,Sockets,我正在通过Tcp套接字连接传输文件,但速度似乎有限,这里是我通过Tcp套接字(TcpClient和TcpListener)发送文件的方式: 在客户端(其中CS是一个加密流,用于读取文件流和TcpStr TcpClient的网络流): 在服务器端(其中CS与客户端相同): 但是我得到的最大速度总是一样的:49164字节/秒,但是当我通过SFTP传输(到同一台服务器)时,我得到了大约100000字节/秒(这是我的最大上传速度) 我试图设置更大或更小的缓冲区;我试图将NoDelay属性设置为true和

我正在通过Tcp套接字连接传输文件,但速度似乎有限,这里是我通过Tcp套接字(TcpClient和TcpListener)发送文件的方式:

在客户端(其中CS是一个加密流,用于读取文件流和TcpStr TcpClient的网络流):

在服务器端(其中CS与客户端相同):

但是我得到的最大速度总是一样的:49164字节/秒,但是当我通过SFTP传输(到同一台服务器)时,我得到了大约100000字节/秒(这是我的最大上传速度)

我试图设置更大或更小的缓冲区;我试图将NoDelay属性设置为true和false;但这似乎并不影响速度

你知道为什么吗


谢谢。

是否可以在不加密的情况下尝试传输,看看是否有区别?我刚刚尝试过,但没有相同的限制。您的Tcp\U客户端。ReceiveBufferSize大小是多少?
do {
    numBytesRead = CS.Read(bytesToSend, 0, bytesToSend.Length);
    TcpStr.Write(bytesToSend, 0, numBytesRead);
    iPos += numBytesRead;
} while (!(numBytesRead == 0));
do {
    numBytesRead = Tcp_NetStream.Read(bytesToRead, 0, Tcp_Client.ReceiveBufferSize);
    CS.Write(bytesToRead, 0, numBytesRead);
    iPos += numBytesRead;
} while (!(iPos == Filesize));