![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Какой обработчик запускается когда приходят данные?
vovanx © (2004-03-22 06:14:00)Какой обработчик запускается в TidTCPClient
когда приходят данные, а то ничего кроме как использовать таймер
неостается, но это не гуд.
Polevi (2004-03-23 14:24:00) [1]ты хелп читал на TThread.Synchronize ?
понимаешь что делает эта ф-ия ?
или бездумно скопировал кривой код из сети ?
vovanx (2004-03-23 11:23:00) [2]
> Polevi
а что нетак с потоком?
как надо?
Polevi (2004-03-23 11:21:00) [3]>Сделал я поток а внем крутится вот это
>procedure TMyThread.DoWork;
>begin
>with Form1 do begin
ну конечно, а процедура эта вызвывается из поточной ф-ии через Synchronize(DoWork) и все работает в основном потоке
нафига доп. поток, спрашивается ?
vovanx (2004-03-23 11:15:00) [4]вот попробовал неполучил опять ничего
IdTCPServer.CommandHandlers.Items[0].Response.Add('RECV '+ FileName+' '+IntToStr(FileSize)+'\r\n');
Reindeer Moss Eater (2004-03-23 11:05:00) [5]Необязательно. Но работать не будет.
Но метод IdTCPClient1.ReadLn ждет эти ограничители.
Если их нет, ждет таймаута.
Если таймаут бесконечный, то возврата из ReadLn не будет.
vovanx (2004-03-23 11:02:00) [6]> Reindeer Moss Eater
нет не содержит, а это обязательно?
Reindeer Moss Eater (2004-03-23 11:01:00) [7]Посылаемая команда содержит завершающие её возврат каретки + перевод строки?
vovanx (2004-03-23 11:00:00) [8]да и еще,
какая разница в том как посылать с сервера эту команду
SendCmd
или
SendReply
vovanx (2004-03-23 10:58:00) [9]чесно несовсем понимаю что это, но вроде нет
Reindeer Moss Eater (2004-03-23 10:56:00) [10]str := Str + IdTCPClient1.ReadLn;
Посылаемая команда ограничена CRLF?
vovanx (2004-03-23 10:52:00) [11]я это сообщение еще немогу увидеть, поэтому до приема файла надо сначала команду принять,
вопрос в чем моя ошибка почему ничего не принимается,
когда это все по таймеру принималось - команда приходила
Reindeer Moss Eater (2004-03-23 10:44:00) [12]ProcessCommand(str,Command);
Распарсили строку
ShowMessage('Принимаю файл: '+Command.Arg[0]);
Показали сообщение
А где прием файла?
vovanx (2004-03-23 10:39:00) [13]тут строчку кода удалил вместе с коментарием,
ProcessCommand(str,Command);
парсит команду и ее аргументы
Reindeer Moss Eater (2004-03-23 09:03:00) [14]Присваиваешь возвращаемый текст переменной str
str := Str + IdTCPClient1.ReadLn;
А иф сравнивает содержимое Command.Command с константой
if Command.Command = 'RECV' then begin
И где здесь логика?
vovanx (2004-03-23 03:26:00) [15]Сделал я поток а внем крутится вот это
procedure TMyThread.DoWork;
begin
with Form1 do begin
if IdTCPClient1.Connected then
str := Str + IdTCPClient1.ReadLn;
Label3.Caption := str;
if Command.Command = 'RECV' then begin
ListBox1.Items.Add('>'+str);
ProcessCommand(str,Command);
ShowMessage('Принимаю файл: '+Command.Arg[0]);
end;
end;
end;
но что-то ничего не получает
Verg (2004-03-22 09:35:00) [16]Начни с освоения многопоточных приложений, потом заходи в сети. Иначе - либо используй поллинг (по таймеру), либо используй асинхронные клиентские сокеты наподобии TClientSocket.
vovanx (2004-03-22 09:08:00) [17]Verg
Сорри, за назойливость, просто никогда раньше не приходилось писать сетевых приложений.
Можно поподробнее про потоки, что значит
> Бери пример - работу с клиентом тоже помести в доп. кодовый
> поток.
Verg (2004-03-22 09:04:00) [18]
> [4] vovanx (22.03.04 08:50)
> во всяком случае, в этом событии я их принимать могу,а хде
> принимать данные в клиенте, как правильно сделать?
Как только connect удачно выполнится, так сразу и можешь принимать/передавать.
Сервер активно использует дополнительные кодовые потоки (TThread). Бери пример - работу с клиентом тоже помести в доп. кодовый поток.
vovanx (2004-03-22 08:50:00) [19]во всяком случае, в этом событии я их принимать могу,а хде
принимать данные в клиенте, как правильно сделать?
Digitman (2004-03-22 08:48:00) [20]
> Но в сервер же есть OnExecute
и где написано, что это событие отражает тот факт, что "приходят данные" ? это только твои домыслы, ничем не подтвержденные