Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.28;
Скачать: CL | DM;

Вниз

Что-то непонятное с 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
3-92847
delta
2002-11-12 17:35
2002.11.28
Результат запроса в итемы чекбокса


1-93100
Suprime
2002-11-17 12:37
2002.11.28
Pronumerovat stroki v ListBox e


3-92887
ger
2002-11-11 10:15
2002.11.28
Ошибка при удалении


1-92969
han_malign
2002-11-18 12:41
2002.11.28
Перетаскивание формы за контент руками


3-92834
Zn
2002-11-12 13:57
2002.11.28
Работа приложения с dbf-файлами на другой машине.