Тема: IdTCPClient1
Показать сообщение отдельно
  #2  
Старый 22.10.2011, 16:49
Аватар для DelphiM0ZG
DelphiM0ZG DelphiM0ZG вне форума
Новичок
 
Регистрация: 22.10.2011
Сообщения: 62
Репутация: 666
По умолчанию Работа с IdTCPClient

Для начала нужно настроить IdTCPClient: Host - IP-адрес сервера, Port - целое число, кроме нуля (на сервере порт должен быть таким же, например 1234). Все эти свойства, конечно же, можно установить и программно. Подключаем клиент к серверу таким кодом:
Код:
IdTCPClient1.Host:=LabeledEdit1.Text; // IP-сервера
IdTCPClient1.Connect; // подключение
Соответственно, отключение:
Код:
IdTCPClient1.Disconnect;
Пример отправки сообщений продемонстрирую на событии нажатия мыши на компоненте Image:
Код:
procedure TClientMainForm.Image1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  If (Button=mbLeft) Then
    IdTCPClient1.WriteLn('left_down')
  Else If (Button=mbRight) Then
    IdTCPClient1.WriteLn('right_down')
  Else If (Button=mbMiddle) Then
    IdTCPClient1.WriteLn('middle_down');
end;
Теперь приложение-сервер. Устанавливаем на форму приложения-сервер IdTCPServer. Код на кнопку "Создать сервер":
Код:
  IdTCPServer1.Bindings.Add; // добавляет подключение
  IdTCPServer1.Bindings.Items[0].IP:=LabeledEdit1.Text; // IP-адрес клиента
  IdTCPServer1.Bindings.Items[0].Port:=1234; // порт клиента
  IdTCPServer1.Active:=True; // активизирует сервер
Код на кнопку "Отключить сервер":
Код:
  IdTCPServer1.Active:=False;
  IdTCPServer1.Bindings.Delete(0);
Код на выполнение сервера (на событие OnExecute компонента IdTCPServer)
Код:
procedure TMainServerForm.IdTCPServer1Execute(AThread: TIdPeerThread);
Var
  Str: String; // строка
  Poz: TPoint; // позиция мышки
begin
  With AThread.Connection Do
    Begin
      Str:=ReadLn;

  // --------------Нажатие кнопок мыши------------------

      If (Str='left_down') Then  // проверяю сообщение клиента
        Begin
          GetCursorPos(Poz);
          Mouse_event(MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN,
            Poz.X, Poz.Y, 0, 0); // событие
        End;
      If (Str='right_down') Then
        Begin
          GetCursorPos(Poz);
          Mouse_event(MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_RIGHTDOWN,
            Poz.X, Poz.Y, 0, 0);
        End;
      If (Str='middle_down') Then
        Begin
          GetCursorPos(Poz);
          Mouse_event(MOUSEEVENTF_ABSOLUTE Or                MOUSEEVENTF_MIDDLEDOWN,
            Poz.X, Poz.Y, 0, 0);
        End;
  End;
end;
Сервер будет нажимать на кнопки мыши на управляемом компьютере. Думаю этого кода достаточно для ответа. По аналогии можно написать код на многие другие действия.
Ответить с цитированием