"буферы сокета" напрямую не влияют на функционирование программы. параметр передаётся в WinSock API и устанавливает размер буфера приёма/передачи, по заполнению которого сокет начинает блокировать данные, если программа не подхватила их вовремя (или сетевая карта не отправила) "размер буфера" - это размер буфера записи в файл, на отдачу не влияет. но когда нажимается "ОК" в настройках при записи каждого файла, даже небольшого DCPlusPlus.xml создаётся буфер в 128MB, и запись в файл начинается только при заполнении всего буфера или закрытии файла
желаемого поведения нельзя добиться накруткой настроек по той причине, что передача присходит блоками 64K - 4MB (зависит от размера файла, 4MB для больших файлов, типа DVD9. в среднем 1Mb). передающая сторона не знает, какой блок будет запрошен следующим, поэтому нельзя впрок прочитать много данных.
если у файла несколько источников, клиент с каждого запрашивает блок со случайным номером, чтобы как можно быстрее распространить весь файл (разным людям раздаются разные куски, а не всем начало файла, а потом они обмениваются между собой, разгружая источник)
если источник единственный, файл запрашивается последовательно, но тоже кусками. поскольку отдающий не знает, какой блок будет следующий, нужен специальный модуль, который бы обнаруживал последовательное чтение файла и читал данные впрок, которые возможно даже не будут запрошены, но читал сразу большой фрагмент. сейчас такого нет в клиентах