Текущий архив: 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.45 MB
Время: 0.027 c