Я использую сокеты в Linux, и я хотел бы отправить большую таблицу (более 2 Мб) без потери данных и достаточно быстро, чтобы иметь плавное видео на клиенте. (то, что я посылаю, это видео поток).
Я пробовал две вещи:
1 °) отправить всю таблицу за один раз
socketError = send(newsockfd,(char*) DataTab,sizeof(DataTab),0);
if (socketError < 0)
error("ERROR server writing to socket");
2 °) отправьте элементы по одному
for (int i=0; i<nbelem; i++) // nbelem is greater than 600'000
{
socketError = send(newsockfd,(char*) &DataTab[i],sizeof(&DataTab[i]),0);
if (socketError < 0)
error("ERROR server writing to socket");
}
Очень быстрая отправка таблицы, но я теряю некоторые данные.
Отправка элементов по одному работает нормально, без потери данных, но это слишком медленно.
Итак, у меня есть 2 вопроса: Каково ограничение данных, которые могут быть отправлены в одном сокете (в байтах)? и Как я могу отправить свою таблицу быстро и без потери данных?
PS: Мои программы должны общаться в локальной сети или в сети Ethernet. Интернет-общение не предусмотрено.