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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
4-24747
Spawn
2003-07-05 18:40
2003.09.08
Хуки


1-24476
Rouse_
2003-08-27 14:39
2003.09.08
Разве это не константа?


3-24313
Buka
2003-08-14 22:52
2003.09.08
Locate в ADO? Работает ли?


3-24336
denick
2003-08-18 13:10
2003.09.08
Помогите пожалуйста с отчетом.


1-24530
DM.OMen
2003-08-26 20:53
2003.09.08
Вопрос по процедурам.





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