Вы можете сделать что-то очень похожее на это.Вы можете посчитать все отправленные вами байты и поставить количество всех отправленных байтов до сообщения в конце вашего сообщения.
Я очень нервничаю всякий раз, когда кто-нибудь говорит о «пакетах» с TCP.Потому что, если вы говорите о пакетах и TCP одновременно, вы смешиваете уровни протокола, которые не должны смешиваться.Нет никакого значимого соответствия между данными, которые вы отправляете в TCP, и пакетами, которые отправляются через IP.
Да, в IP-пакетах есть порядковые номера, используемые для отправки информации TCP.Эти порядковые номера представляют собой количество отправленных байтов (или октетов).Они идентифицируют, где в потоке принадлежат байты в пакете, но в остальном они не связаны с пакетом.
Если происходит повторная отправка, или вы используете алгоритм Nagle, или если стек TCP выглядит какв этот день вы можете получить две операции отправки, которые окажутся в одном пакете.Или вы можете получить половину одной операции отправки, заканчивающейся в одном пакете, и половину в другом пакете.И каждый из этих пакетов будет иметь свои собственные порядковые номера.
Как я уже сказал, нет абсолютно никакой значимой связи между операциями отправки, которые вы выполняете на транспортном уровне, и пакетами, отправляемыми на сетевом уровне.Я тоже не говорю теоретически.Это не «на самом деле все пакеты внизу, и отправка вообще, за исключением какого-то странного условия, помещает все байты в один пакет».Нет, сценарии, которые я описал выше, где байты от одной операции отправки распределяются по нескольким пакетам, происходят часто и в непредсказуемых условиях.
Итак, я не знаю, почему вы хотите знать что-либо о порядковых номерахв пакетах.Но если вы использовали порядковый номер в качестве прокси для количества отправленных байтов, вы можете сохранить этот подсчет самостоятельно и просто вставить его в поток самостоятельно.И не забудьте посчитать эти байты тоже.