#.net #windows #stream #smb
#.net #Windows #поток #smb
Вопрос:
Возможно, это неправильный вопрос или форум, но есть ли способ изменить размер буфера по умолчанию для операций копирования файлов / потоков в приложении .NET, которое использует (предположительно) размеры буфера по умолчанию, когда у вас нет доступа к исходному коду?
Я использую программу, которая выполняет набор копий файлов через нашу глобальную сеть, но это очень медленно. Он использует SMB2 для копирования файлов из одного места в другое, используя сетевой UCN-путь.
При запуске Wireshark я вижу, что файлы (обычно 1 мб в нашей глобальной сети 100 мб с задержкой 7 мс) разбиваются на пакеты 4k (размер буфера по умолчанию, я полагаю, для потоковых операций .net), отправляемые в общий ресурс с использованием SMB2, также выполняется изрядное количество операций восстановления TCP, и передача файла занимает около 3 секунд.
Я выполнил аналогичную операцию, используя file copy и Robocopy, и они отправили 65 тыс. пакетов, абсолютно никаких операций восстановления пакетов TCP, просто последовательный список из 65 тыс. запросов SMB2, и это занимает миллисекунды.
Будем признательны за любую помощь.
Комментарии:
1. Это не имеет особого смысла, вы, вероятно, видите размер окна TCP. Ничего общего с .NET. Читать это .
2. Хорошо, но в wireshark отображается: SBM2 с размером пакета 4096 байт, при копировании файла он показывает 65535. Код использует встроенные команды копирования файлов из .NET