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

Вниз

Что-то непонятное с onCLientRead   Найти похожие ветки 

 
VID   (2002-10-02 20:25) [0]

Привет!

USES recvpckt;
http://delphibase.endimus.com/?action=viewfunc&topic=nettransfer&id=10335


var RecvList:TStringList;

...

procedure Form1.ServeronClientRead();
VAR S:String;
begin
S:=Socket.ReceiveText;
REPEAT
IF ProcessReceivedPacket(GBuffer, S) then
begin
IF GBuffer.FBuffer <> "" then RecvLST.Add(GBuffer.FBuffer);
ClearBuffer(GBuffer);
end;
UNTIL S="";
end;

СИТУАЦИЯ: Клиент посылает серверу, к примеру, сто пакетов один за другим.
Итак пришёл первый пакет. Возникло событие onClientRead, была вызывана проц-ра ProcessReceivedPacket.
Пришёл второй пакет. СНОВА возникло событие. И ЭТО ПРИ ТОМ, ЧТО РАБОТА проц-ры ProcessReceivedPacket не была завершена...
Отсюда вопрос: как быть ?
Что надо сделать, для того, что бы не потерять ни один из пришедших пакетов и в тоже время корректно обработать все полученные пакеты.
УЧТИТЕ, что речь идёт о выполнении кода в основном потоке приложения.

А то полная фигня получается... вся логика юнита recvpckt идёт коту под хвост :(


 
Digitman   (2002-10-03 08:31) [1]

Почему ты считаешь, что пакет м.б. утерян ? И причем здесь осн. или доп.код.потоки ?


 
Polevi   (2002-10-03 11:00) [2]

>СНОВА возникло событие. И ЭТО ПРИ ТОМ, ЧТО РАБОТА проц-ры >ProcessReceivedPacket не была завершена...

ты ввобще понимаешь что такое событие в данном контексте ?
сам же говоришь что поток один - как может вызваться ClientRead если не передано управление на строку откуда этот обработчик вызывается - ведь кодовый поток занят выполнением ProcessReceivedPacket ???


 
VID   (2002-10-03 11:27) [3]

ВОПРОС ЗАКРЫТ



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

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

Наверх




Память: 0.44 MB
Время: 0.01 c
6-93165
Slice
2002-10-03 13:35
2002.11.28
Как соксифицировать свою программу?


14-93204
PaRL
2002-11-09 13:09
2002.11.28
LPARAM - Этап 1 - Обучение...


1-93027
AlexNO
2002-11-19 10:43
2002.11.28
Min & Max


3-92877
cf
2002-11-09 23:06
2002.11.28
SQLDialect


1-93070
ЮРИЙ_К
2002-11-16 10:30
2002.11.28
Назойливый Warning компилятора





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский