Tcp сокеты, передача файлов и низкая скорость в C # - PullRequest
1 голос
/ 12 февраля 2012

Я передаю файлы по соединению 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; но это не влияет на скорость.

Есть идеи, почему?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...