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