Главная страница
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.025 c
3-24309
Suharew
2003-08-19 13:05
2003.09.08
Query1.Locate


3-24343
Groove_SQL
2003-08-18 08:45
2003.09.08
ORDER BY вычисляемое поле


4-24758
Miwa
2003-07-08 22:36
2003.09.08
SHFileOperation выдает ошибку №7, да еще


3-24335
DBProger
2003-08-18 13:39
2003.09.08
Блокировка добавления/удаления записей в DBGrid


14-24664
Kost
2003-08-20 15:04
2003.09.08
TextOut