У меня был еще один вопрос по этой проблеме, но я не задал его должным образом, поэтому я снова здесь!
Я отправляю файл, отправляя его частями.Сейчас я играю с разными числами для размера этого чанка, чтобы увидеть, какой размер является наиболее эффективным.
При тестировании на локальном хосте любой размер чанка, кажется, работает нормально.Но когда я тестировал его по сети, кажется, что максимальный размер порции составляет 8191 байт.Если я попробую что-нибудь выше, передача станет чрезвычайно, мучительно, медленной.
Чтобы показать, что происходит, вот первые 100 строк журналов Wireshark, когда я использую чанк размером 8191 байт и когда я используюразмер фрагмента 8192 байта: (отправитель 192.168.0.102, а получатель 192.168.0.100)
8191: http://pastebin.com/E7jFFY4p
8192: http://pastebin.com/9P2rYa1p
Обратите внимание, что в журнале 8192 в строке 33 получателю требуется много времени для подтверждения данных.Это происходит снова в строке 103 и строке 132. Я полагаю, что эта задержка является корнем проблемы.
Обратите внимание, что я не изменил ни параметр SO_SNDBUF, ни параметр TCP_NODELAY.
Так что мой вопрос Почему я получаю ACK с задержкой при отправке файлов кусками по 8192 байта, когда все работает нормально при использовании кусков по 8191 байта?