Задать вопрос

Как принимает recv?

Есть 2 приложения: сервер и клиент. Клиент читает данные из файла, добавляет в начало свой заголовок и посылает пакет. Сервер не знает заранее сколько будет принято данных ( знает что точно не больше 5000), поэтому делает recv со значением буфера равным 5000. Но получается такая ситуация, что клиент посылает 5 раз по 1000 байт, а сервер читает за раз 5000 байт, тем самым склеивая посылаемые данные клиента, что делать не надо.
Так вот вопрос: как сделать так, чтобы я принимал ровно столько, сколько данных послал клиент, без какого-либо склеивания.
Пишу на C по linux, используемые функции recv/send, код приводить смысла не вижу, т.к там 10 строчек...
  • Вопрос задан
  • 737 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя jcmvbkbc К ответам на вопрос (3)
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Используя TCP/IP -- никак. Указывайте длину данных в своём заголовке на сервере, а на клиенте получайте заголовок и читайте столько данных, сколько там записано.
Ответ написан
Комментировать