Форум: "Сети";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизTclientSocket Найти похожие ветки
← →
ingine (2004-12-28 20:58) [0]Вопрос конечно глупый, но как заставить работать TClientSOcket в консольном приложении(где нет циклов обработки виндовых сообщений)?
← →
VMcL © (2004-12-28 23:35) [1]>>ingine (28.12.04 20:58)
Видимо, нужно сделать цикл выборки сообщений или использовать блокирующий режим.
P.S. Зачем нужно именно консольное приложение? Возможно, подойдет GUI"шное, но без использования VCL?
← →
Digitman © (2004-12-29 08:13) [2]
> ingine (28.12.04 20:58)
> Вопрос конечно глупый
с тем же успехом можно было спросить, как, мол, заставить работать другой компонент, явно или неявно использующий механизм оконных нотификаций .. TClientSocket в режиме NonBlocking в этом смысле - не исключение, он так же использует этот механизм, а значит цикл ожидания/выборки/диспетчеризации вин-сообщений в том или ином виде тобой должен быть организован
← →
Seeker © (2004-12-29 09:32) [3]Есть еще WSocket( эт чтоб заменить TClientSOcket) там все работает нормально.
← →
Digitman © (2004-12-29 11:15) [4]
> Seeker © (29.12.04 09:32) [3]
> там все работает нормально
а TClientSOcket, надо понимать, "работает ненормально" ? Так что ли ?)
← →
Seeker © (2004-12-29 12:08) [5]
> а TClientSOcket, надо понимать, "работает ненормально" ?
> Так что ли ?)
> Digitman ©
А ты пытался засунуть TClientSOcket в поток?
Он сразу переходит в блокирующий режим, а отсюда прощай события.
Нужно организовывать все самому.
WSocket в этом плане работает нормально,все события на месте.
← →
Digitman © (2004-12-29 12:39) [6]
> Seeker © (29.12.04 12:08) [5]
> А ты пытался засунуть TClientSOcket в поток?
"засунуть" я не пытался, стиль "засовывания", увы, не мой
> Он сразу переходит в блокирующий режим
чушь ты несешь несусветную.
с какого перепугу компонент изменит режим, определяемый св-вом ClientType, если ты сам ЯВНО его не изменишь ?
> отсюда прощай события
опять же - чушь.
до тех пор, пока ClientNype = ctNonBlocking, ничто и никуда не "пропадет".
головой просто думать надо, а не причинным местом.
> Нужно организовывать все самому
и это так сложно ?
организовать сраный по "сложности" цикл
while GetMessage do Dispatchmessage ?!
← →
ingine (2004-12-29 18:17) [7]Дак все таки как
> организовать сраный по "сложности" цикл
> while GetMessage do Dispatchmessage ?!
← →
VMcL © (2004-12-29 18:58) [8]>>ingine (29.12.04 18:17) [7]
Именно так, как написано. Разве что, можно использовать PeekMessage вместо GetMessage.
← →
TButton © (2004-12-29 21:52) [9]
> организовать сраный по "сложности" цикл
*confused* ???
← →
Digitman © (2004-12-30 08:20) [10]
> ingine (29.12.04 18:17) [7]
> Дак все таки как
var
Msg: TMsg;
..
while GetMessage(Msg, 0, 0, 0) do
DispatchMessage(Msg);
цикл этот должен работать в том трэде, который создал объект TClientSocket
но следует учесть, что в случае конс.приложения реализация этого цикла в осн.трэде не позволит осуществлять пользовательский клавиатурный ввод "традиционным" способом. т.е. с пом. ReadLn(), ибо ReadLn() - блокирующая ф-ция
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c