Я передаю файлы по соединению Tcp Sockets, но кажется, что скорость ограничена, вот как я отправляю файлы по Tcp Sockets (TcpClient и TcpListener):
На стороне клиента (где CS - это CryptoStream, который читает FileStream, а TcpStr - NetworkStream TcpClient):
do {
numBytesRead = CS.Read(bytesToSend, 0, bytesToSend.Length);
TcpStr.Write(bytesToSend, 0, numBytesRead);
iPos += numBytesRead;
} while (!(numBytesRead == 0));
На стороне сервера (где CS такой же, как на стороне клиента):
do {
numBytesRead = Tcp_NetStream.Read(bytesToRead, 0, Tcp_Client.ReceiveBufferSize);
CS.Write(bytesToRead, 0, numBytesRead);
iPos += numBytesRead;
} while (!(iPos == Filesize));
Но максимальная скорость, которую я получаю, всегда одна и та же: 49164 байт / с, но когда я передаю, например, через SFTP (на тот же сервер), у меня получается что-то вроде 100000 байт / с (что является моей максимальной скоростью загрузки).
Я пытался установить больший или меньший буфер; Я попытался установить свойство NoDelay на true и false; но это не влияет на скорость.
Есть идеи, почему?
Спасибо.