Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Вниз

Место на диске у конечного хоста при передачи данных   Найти похожие ветки 

 
Nachinaushiy   (2006-02-21 14:05) [0]

Такой вопрос… вообщем есть куча клиентов которые отправляют на сервер большие объемы данных параллельно...
притом передачу могут вести параллельно несколько клиентов , но возникает проблема с сохранением данных если место на диске заканчивается… он пишет нулевые файлы а ексепшен не выдает… проверка свободного места на диске перед передачей ни чего не дает… так как чуть позднее после начала передачи клиентом может присоединиться второй клиент и начать отправлять данные на сервер.


 
RO   (2006-02-21 14:10) [1]

Приводи код сервера и код клиента.


 
umbra ©   (2006-02-21 14:11) [2]

так и надо на сервере при подключении каждого клиента проверять доступное место на диске, вычитать зарезервированное уже подключившимися клиентами и если места боьше нет, то нового клиента отключать


 
Nachinaushiy   (2006-02-21 14:19) [3]


> RO   (21.02.06 14:10) [1]
> Приводи код сервера и код клиента.

код клиента и код сервера очень большой и весь на классах... слижком много приводить можно только данную часть:
   CreateDir(Config.IncomingPath+IntToStr(aTaskQuery.TaskId));
   aFileStream := TFileStream.Create(Config.IncomingPath+IntToStr(aTaskQuery.TaskId)+"\"+aTaskQuer y.FileName, fmCreate);
   aPosition := 0;
   aExit     := False;
   while not aExit do
   begin
     if (aTaskQuery.DataSize - aPosition) < CONST_DATA_SENDBUFFER_SIZE then
     begin
       aBufSize := aTaskQuery.DataSize - aPosition;
     end else
     begin
       aBufSize := CONST_DATA_SENDBUFFER_SIZE;
     end;
     try
       AThread.Connection.ReadBuffer(aBuffer, aBufSize);
     except
       on E: Exception do
       begin
         DoOnTransportStringMessage("Error S032: Клиент: ""+TSimpleClient(AThread.Data).FNodeName+"". Ошибка приема данных с клиента: " + E.Message);
         exit;
       end;
     end;
     try
       aPosition := aPosition + aBufSize;
       aFileStream.Write(aBuffer, aBufSize);
     except
       on E: Exception do
       begin
         DoOnTransportStringMessage("Error S033: Клиент: ""+TSimpleClient(AThread.Data).FNodeName+"". Ошибка сохранения данных: " + E.Message);
         Exit;
       end;
     end;
     //DoOnNotifyTransportData(aPosition, aTaskQuery.DataSize);
     if aTaskQuery.DataSize <= aPosition then
     begin
       aExit := True;
     end;
   end;


> umbra ©   (21.02.06 14:11) [2]
> так и надо на сервере при подключении каждого клиента проверять
> доступное место на диске, вычитать зарезервированное уже
> подключившимися клиентами и если места боьше нет, то нового
> клиента отключать

Идея хорошая и приятная ... как сам не дошел) Спасибо
Но ексепшен почему то не работает(((((


 
umbra ©   (2006-02-21 14:34) [4]


> Но ексепшен почему то не работает(((((

потому что его никто не возбуждает. для метода FileStream.Write надо проверять, что он возвращает. Если что-то пошло не так, то он вернет 0


 
Nachinaushiy   (2006-02-21 14:39) [5]

спасибо я понял



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.01 c
2-1149847180
VitV
2006-06-09 13:59
2006.07.02
Хранения данных в из DBRichedit.


15-1149139763
Ega23
2006-06-01 09:29
2006.07.02
С Днём рождения! 1 июня


2-1150273031
Canchos
2006-06-14 12:17
2006.07.02
Упорядочивание массивов


15-1149587106
tButton
2006-06-06 13:45
2006.07.02
странно... не смог найти ветку про то чья луна


15-1149483657
Ega23
2006-06-05 09:00
2006.07.02
С Днём рождения! 5 июня





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский