Главная страница
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.052 c
3-1092225110
Barcebel
2004-08-11 15:51
2004.09.05
Извлечение данных посредством ADODataSet


8-1087834552
XGarik
2004-06-21 20:15
2004.09.05
Надпись на картинке JPG


1-1092905242
ferr
2004-08-19 12:47
2004.09.05
WebBrowser


1-1092713955
DmiSb
2004-08-17 07:39
2004.09.05
Аналог TStringAdapter в КОЛ ?


6-1088709945
Скив
2004-07-01 23:25
2004.09.05
JavaScript и WebBrowser