Здравствуйте, AlexGin, Вы писали:
SVZ>>Только если ты работаешь с TCP на прикладном уровне, то это не твоя задача. К тебе приходит упорядоченный поток. AG>Да, работаю с TCP на прикладном уровне, через QTcpSocket (Qt Network)!
AG>Тем не менее, исходный пакет вполне себе разбивается на небольшие фрагменты (что лично меня несколько удивило). AG>В общем — пришлось доработать так, чтобы была сборка пакета из фрагментов.
Я подозреваю, ты немного о другой разбивке.
Т.к. это поток, то конца у него естественно нет. Только по своим признакам ты можешь определить, когда надо прекратить чтение. Либо передавать размер данных в начале, либо передавать какой-то маркер.
Размер кусков, вычитываемых за один раз из сокета, это вообще дело тёмное, отдано на откуп системе и с MTU никак не связано.
Скорость приема данных на уровне драйвера и скорость чтения прикладной программой из сокета разные, поэтому за одно чтение ты можешь зачитать сразу несколько пакетов. В общем не парься.
Максимум — ты можешь порулить размером буфера, выделяемого под сокет. В 99.9% дефолтных значений хватит за глаза.
А размер буфера в прикладной программе — полностью под твоим контролем, хоть по одному байту читай.
_____________________
С уважением,
Stanislav V. Zudin