Прежде всего, вам нужно прочитать о порядке байтов и сериализации.
Во-вторых, length
- это размер всего массива, поэтому, когда i
равен нулю, вы отправляете весь массив,когда i
равен 1, вы отправляете все, кроме первого элемента, плюс мусор в конце и так далее.В-третьих, при получении вы перебираете sizeof(the struct)
членов массива.Разве вы не хотите перебирать весь массив?
Когда вы говорите the struct size will be updated continuously
, имеете ли вы в виду количество элементов в массиве?Ваша структура имеет фиксированный размер.
Если вы отправляете переменное количество данных, т.е. если вы хотите отправить фрагмент данных, который имеет одну длину в одно время и другую длину в другое время, или даже если выЕсли вы хотите, чтобы количество элементов в массиве обновлялось динамически, вы ДОЛЖНЫ отправить этот размер через сокет и отправить его перед данными.Сначала отправьте размер, прочитайте его сначала на принимающей стороне, а затем получающая сторона узнает, сколько еще данных нужно прочитать, и, что более важно, где заканчиваются данные, так что, если будет больше данных позже, не все смешаютсядо.