Я строю некоторые классы для сетевого общения, используя tcpClient. У меня есть класс tcpserver, принимающий соединения и перетасовывающий их в фоновые потоки, чтобы он мог продолжать принимать соединения через этот порт. Я могу подключиться к серверу с несколькими клиентами и выполнять передачу файлов с сервера на клиенты. Запустив сервер и клиентов на моем компьютере разработчика, я получаю хорошую скорость передачи файлов (160 Мбит / с или около того - я использую пакеты больших размеров).
Я тестировал все большие и большие передачи файлов от нескольких клиентов и заметил странную вещь - при попытке отправить большие файлы (> 3 гигабайта) примерно на половине пути передачи начали замедляться и колебаться. Если я попытаюсь отправить свой тестовый файл на 3 гигабайта (.iso), а также переместить большие файлы (> 500 мг) с помощью двух или трех других клиентов, также работающих на моем компьютере разработчика, передача .iso может замедлиться до сканирования и останется там ... всего 1 мегабит в секунду или меньше, даже после того, как другие клиенты закончили получать свои файлы. Кроме того, без причины я вижу, что скорость снова возрастает и колеблется от 30 до 80 мегабит в секунду.
Ошибок нет, и, перебрав код, я просто не представляю, где может произойти замедление.
Может ли это быть приоритетом потока? Я должен использовать большие типы переменных для обработки некоторых элементов передачи файла (int64 для размера файла, другой для записи количества байтов, которые были получены, т. Д.) ... мог ли я видеть замедление, как значения этих переменных становятся больше?
Любая помощь будет принята с благодарностью.