Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Зависает IdTCP Demo6, откомпилированный в Делфи-7   Найти похожие ветки 

 
Winni   (2004-07-02 16:54) [0]

В Делфи6, в папке Demo\Internet есть пример Chat, выполненный с помощью IdTCPClient  и IdTCPServ. Все работает хорошо. Но если те эе тесты компилировать в Делфи7, этот Демо зависает. Причем экзешники, компилированные Д6, работают нормально (на моей машине). Зависание происходит после того как:
- Сервер активизирован
- Клиенту задано имя (Login) и клиент подключился
- Сервер посылает сообщения ( и клиент их получает):
   AThread.Connection.WriteLn("ISD Connection Established...");
   AThread.Connection.WriteLn("Please send valid login    sequence...");
   AThread.Connection.WriteLn("Your Name:");
. . . и далее . . .
   Client.Name := Msg;
   UpdateClientList;
   BroadcastMessage("System", Msg + " has just logged in.");
   AThread.Connection.WriteLn(memEntry.Lines.Text);

. . .  далее не нашел откуда - клиенту приходит текст:
Welcome to the Indy TCP Server Demo Chat.
This program is disigned simply to show a slightly more advanced  usage of some of the commong components found in Indy.

Клиент прослушивает сеть следующим образом:

procedure TForm1.Timer1Timer(Sender: TObject);
var
 Com,
   Msg: string;
begin
 if not IdTcpClient1.Connected then
   exit;

 Msg := IdTCPClient1.ReadLn("", 5);

 if Msg <> "" then
   if Msg[1] <> "@" then
   begin
     { Not a system command }
     memLines.Lines.Add(Msg);
   end
   else
   begin
     { System command }
     Com := UpperCase(Trim(Copy(Msg, 2, Pos(":", Msg) - 2)));
     Msg := UpperCase(Trim(Copy(Msg, Pos(":", Msg) + 1, Length(Msg))));
     if Com = "CLIENTS" then
       lbClients.Items.CommaText := Msg;
   end;

end;

Пробовал заменить таймер обычной кнопкой, но результат тот же.


 
Reindeer Moss Eater ©   (2004-07-02 16:59) [1]

Пробовал заменить таймер обычной кнопкой, но результат тот же.

Таймер кнопкой заменять нельзя. Надо обязательно кнопкой с рисунком (желательно рисунком таймера) TbitBtn


 
Winni   (2004-07-02 18:53) [2]

Оказывается, достаточно поставить на обе формы IdAntiFreez. Однако появляется другое - если двигать форму клиента в Run-Time, то зависает и сервер и оба клиента ( пробую на одной машине в таком сочетании ).Если никого не двигать - все работает нормально. На форуме было сказано, что помогает TIdSync ( в аналогичной ситуации). Нет ли у кого - нибудь примера решения этой задачки?


 
Reindeer Moss Eater ©   (2004-07-02 18:57) [3]

Оказывается, достаточно поставить на обе формы IdAntiFreez.

Так вот оказывается что такое "зависание"

Если никого не двигать - все работает нормально.

1. Зачем серверу форма?
2. Зачем её двигать?
3. Зачем TidTCPClient в клиенте помещать на форму, которую можно двигать? /а не в датамодуле держать например/


 
Winni   (2004-07-02 20:45) [4]

Конечно, можно не использовать формы, но все же формы удобнее и интересно понять, в чем дело. По indy совсем нет примеров. Д7 ссылается на Интернет, а там как я понял, исходники модулей Indy.
Где бы найти примеры применения компонент Indy?



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
3-1092041079
ivc_andr
2004-08-09 12:44
2004.09.05
не могу соединиться с сервером приложений


1-1093019568
начинающий
2004-08-20 20:32
2004.09.05
Ctl3D


4-1090478771
SPeller
2004-07-22 10:46
2004.09.05
Стандартные размеры шрифтов


3-1092227715
BRemB
2004-08-11 16:35
2004.09.05
Проблема со сканированием БД в BDE


1-1093003639
kukuikar
2004-08-20 16:07
2004.09.05
Я изменил Dialogs.pas. Как мне переделать Dialogs.dcu?