Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2016, 15:55   #1
dimoni414
Пользователь
 
Регистрация: 20.09.2014
Сообщений: 13
Вопрос Предача файла. Разделяемая память. Заполнение при считывании

Не могу решить проблему:
Если файл кратен размеру передаваемому через разделяемую память, то проблем нет. Иначе в полученный файл записываются лишние байты, как это решить?
То есть разделяемая память заполнена сервером не полностью, а записывается клиентом уже полный блок памяти, включая мусор.
Насколько мне известно эта проблема называется Padding, но я ничего не нашел стоящего в интернете на эту тему.

Вот циклы, записи:
Код:
while(!feof(file_ptr))
{
    sem_wait(sem_serv);
    fread(segptr, 1, SEGSIZE, file_ptr);
    sem_post(sem_client);
}
Чтения:
Код:
while (count_write_byte < file_size) {
    sem_post(sem_serv);
    sem_wait(sem_client);
    count_write_byte += fwrite(segptr, 1, SEGSIZE, file_ptr);
}

Последний раз редактировалось dimoni414; 18.05.2016 в 16:10.
dimoni414 вне форума Ответить с цитированием
Старый 18.05.2016, 16:17   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

В начало буфера вписывайте размер блока - тогда получатель будет знать сколько писать.
А если размер файла у вас есть, то просто подсчитывайте сколько байт записано и обрезайте лишнее.
waleri вне форума Ответить с цитированием
Старый 18.05.2016, 18:48   #3
dimoni414
Пользователь
 
Регистрация: 20.09.2014
Сообщений: 13
По умолчанию

Большое спасибо. Проблема решена.
dimoni414 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при считывании из файла JustSay Общие вопросы Delphi 3 29.07.2013 13:28
2 проги на С++, потоки и разделяемая память. Salec Фриланс 1 12.06.2013 18:28
Разделяемая память в unix на C Cannibal Помощь студентам 0 07.06.2013 08:28
Разделяемая память Spb Общие вопросы C/C++ 0 25.12.2011 14:49
Проблема при считывании из файла JeyKip Общие вопросы C/C++ 0 17.01.2010 22:03