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

Вниз

Indy. TidTCPClient - где ошибка?   Найти похожие ветки 

 
Jao   (2003-07-02 14:58) [0]

Сервер:
st:=ReadLn;
fs:=Tfilestream.create(filename,fmcreate);
ReadStream(fs,-1,true);
fs.Free;
WriteLn("1");

Клиент:
WriteLn("0");
fs:=Tfilestream.create(filename,fmopenread);
WriteStream(fs,true,false,0);
fs.free;
st:=ReadLn;

----
- убираю последнюю строку *st:=ReadLn* и всё работает, иначе виснет


 
Digitman ©   (2003-07-02 15:17) [1]

ты в курсе , чем занимается ReadLn() ?
ты в курсе "новостей", которые привнес в мир программирования механизм сообщений Windows ?


 
Jao   (2003-07-02 15:27) [2]

в TidTCPClient ReadLn занимается принятием строки, причем в демопримере по Indy он этим занимается замечательно :)


 
Digitman ©   (2003-07-02 15:42) [3]


> Jao


ну да, замечательно занимается ... а в это время кодовый поток, "замечательно занятый" исполнением ReadLn(), не занимается ожиданием/диспетчеризацией/обработкой оконных сообщений


 
Jao   (2003-07-02 17:03) [4]

>Digitman

это всё так, но проблема в том что в TidTCPClient нет сообытия на приход сообщения, в отличии от TTCPClient *во всяком случае я не нашел*


 
Digitman ©   (2003-07-02 17:12) [5]

причем здесь событие ? я - о сообщениях Windows


 
Jao   (2003-07-02 17:21) [6]

откуда я знаю какое сообщение отвечает за приход данных на сокет, хоть бы кусочек кода скинул :o) да и не хотелось бы так глубоко копать, когда это, по идее, должно быть предусмотрено в компоненте


 
Digitman ©   (2003-07-02 17:29) [7]


> по идее, должно быть предусмотрено в компоненте


по твоей идее, заметь.
но не по идее MS.

совет прост - выноси работу с TidTCPClient в доп.код.поток, организовав там цикл выборки/диспетчеризации win-сообщений. В основном же код.потоке выполняй на здоровье свои ReadLn() - "виснуть" ничего не будет.


 
Jao   (2003-07-02 17:38) [8]

> Digitman

всё уже давно в доп.код.потоке, а насчет "выборки/диспетчеризации win-сообщений" - для меня это темный лес - тупая я сволочь, хех :)))


 
vuk ©   (2003-07-02 18:01) [9]

to Jao:
Сомнение вызывает установка в true параметра ReadUntilDisconnected на сервере. Я бы на Вашем месте сначала передал длину потока и тогда можно было бы точно знать сколько байт ожидать при передаче.

to Digitman:
>совет прост - выноси работу с TidTCPClient в доп.код.поток,
>организовав там цикл выборки/диспетчеризации win-сообщений.
У него же Indy... Там все работает в блокирующем режиме и сообщения Windows не используются.



 
Jao ©   (2003-07-03 10:27) [10]

>vuk
>установка в true параметра ReadUntilDisconnected на сервере

да Оно - теперь работает.

Спасибо всем!!!


 
Digitman ©   (2003-07-03 11:43) [11]


> vuk


может быть.
в подробности не вникал.

а вот по поводу префикса размера сообщения - ценный совет автору



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

Текущий архив: 2003.09.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
9-24292
Карлсон
2002-12-15 14:53
2003.09.08
GLScene


1-24465
Andrey V.
2003-08-27 20:55
2003.09.08
Разница в создании формы или почему я получаю AV


1-24482
Alecs
2003-08-27 12:29
2003.09.08
Как скрыть родительские property в Object Inspectore?


4-24742
ivankohut
2003-07-07 17:02
2003.09.08
Изменение вида полос прокрутки


14-24616
Jao
2003-08-17 17:12
2003.09.08
Нет бардаку на винте!!! Оставь свое мнение.