Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Исправить простейшую программу на Indy, [Indy 10,CodeGear] 
:(
    Опции темы
Urvin
Дата 6.2.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 1.6.2006

Репутация: нет
Всего: нет



Друзья! Помогите!

Путем недолгих рассуждений понял, что мне будут вполне приятны компоненты Indy.
А вот понять как правильно сделать я никак не могу.

Как мог, сделал клиент-серверную связь на Indy:
Клиент:
Код

function TForm1.TCP_Connect(msg: string): boolean;
begin
  result:=false;

  idTcp.Host:=edtHost.Text;
  idTCP.Port:=StrToInt(edtPort.Text);

  try
    idTCP.Connect;
  finally
    try
      idTCP.GetResponse(200);

      idTCP.SendCmd('Preved '+ msg,201);
      idTCP.IOHandler.Capture(memo1.Lines);

      idTCP.SendCmd('Quit', 202);
      result:=true;
    finally
      idTCP.Disconnect;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not TCP_Connect('mycommand') then
    ShowMessage('Bad connection!');
end;


Сервер:
Код

procedure TfrmMain.btnConnectClick(Sender: TObject);
begin
  tcpServer.DefaultPort:=StrToInt(edtPort.Text);
  tcpServer.Active:=True;
end;

procedure TfrmMain.tcpServerConnect(AContext: TIdContext);
begin
  AContext.Connection.IOHandler.WriteLn('200 My Server ready.');
end;

procedure TfrmMain.tcpServerExecute(AContext: TIdContext);
var
  LCmd: string;
  LLine: string;
begin
  try
    LLine := AContext.Connection.IOHandler.ReadLn;
    LCmd := Fetch(LLine);

    if AnsiSameText(LCmd, 'QUIT') then begin
      AContext.Connection.IOHandler.WriteLn('202-Bye!');
      AContext.Connection.Disconnect;
    end
    else if AnsiSameText(LCmd, 'PREVED') then begin
      AContext.Connection.IOHandler.WriteLn('Medved.');
      Memo1.Lines.Insert(0,LLine);
    end
    else begin
      AContext.Connection.IOHandler.WriteLn('400 Unknown Command');
    end;
  finally

  end;
end;


В настоящее время существует две проблемы:
- Клиент подвисает при работе с сетью. Антифриз стоит.
- Функция подключения в клиенте не может отловить отсутствие подключения
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0366 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.