Правильный?
TCP / IP имеет множество встроенных функций самонастройки (хотя по умолчанию масштабирование окна отключено). Если вы видите различное поведение, использующее разные буферы уровня приложения, то это, скорее всего, связано с аномалиями в коде приложения. Если код с закрытым исходным кодом, то вы можете проводить только тестирование черного ящика, чтобы найти оптимальное поведение. Однако, по-видимому, кажется, что чтение источника задерживается до тех пор, пока буфер не будет пуст - попробуйте использовать вращающиеся буферы с предварительной выборкой, например,
i) прочитать X байтов в буфер 1
ii) начать запись буфера 1 на выход в отдельном потоке
iii) прочитать X байтов в буфер 2
iv) когда поток, созданный в ii, возвращается, поменяйте местами буферы и повторите шаги, начиная с ii
C.