Книга: Delphi. Учимся на примерах

Полный исходный код модулей

Полный исходный код модулей

Полный код модуля серверной программы представлен в листинге 16.1.

Листинг 16.1. Модуль серверной программы

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp;
type TForm1 = class(TForm)
 ServerSocket1: TServerSocket;
 procedure FormDestroy(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 procedure ServerSocketlClientRead(Sender: TObject; Socket: TCustomWinSocket);
 procedure FormPaint(Sender: TObject);
private
 { Private declarations }
public
 { Public declarations }
end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormDestroy(Sender: TObject);
begin
 ServerSocket1.Active:= False; //отключаем сервер
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 ServerSocket1.Active:= True; //активизировать сервер
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
 str, x, y: string; //полученный текст и координаты
  //указателя по X и по Y
 i, j: integer; //счетчики циклов
 begin
 //обнуляем координаты курсора
 х := ' ';
 у := ' ';
 str:= Socket.ReceiveText; //полученный от клиента текст
 for i:=1 to Length(str) do begin
  if str[i] <> '_' then x:= x + str[i]; //координаты по х
  if str[i] = '_' then Break; //разделитель между
   //координатами указателя
 end;
 for j:= i+1 to Length(str) do у:= y+str[j]; //координаты по у
 //устанавливаем новые координаты указателя
 SetCursorPos(StrToInt(x), StrToInt(у));
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
 Form1.Hide;
end;
end.

Полный код модуля клиентской программы представлен в листинге 16.2.

Листинг 16.2. Модуль клиентской программы

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls, ExtCtrls;
type TForm1 = class(TForm)
 Button1: TButton;
 Button2: TButton;
 Client: TClientSocket;
 Timer1: TTimer;
 port: TEdit;
 ip: TEdit;
 Label1: TLabel;
 Label2: TLabel;
 procedure Button2Click(Sender: TObject);
 procedure FormDestroy(Sender: TObject);
 procedure Button1Click(Sender: TObject);
 procedure Timer1Timer(Sender: TObject);
 procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
 procedure ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
private
 { Private declarations }
public
 { Public declarations }
end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
 Timer1.Enabled:= False;//выключаем таймер
 Client.Close; //закрываем соединение
 Client.Active:= False; //отключаемся от сервера
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
 Client.Close; //закрываем соединение
 Client.Active:=False; //отключаемся от сервера
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 Client.Port:= StrToInt(port.Text); //считываем порт
 Сlient.Address:= ip.text; //считываем ip-адрес сервера
 Client.Active:= True; //соединяемся
 Timer1.Enabled:= True; //включаем таймер
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
 cur:TPoint; //хранит координаты указателя мыши
begin
 GetCursorPos(cur); //узнаем координаты указателя мыши
 //отправляем данные на сервер
 Client.Socket.SendText(IntToStr(cur.X) +'_' + IntToStr(cur.Y));
end;
procedure TForm1.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
 ShowMessage('Connected!'); //показать сообщение
end;
procedure TForml.ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
 ShowMessage('Disconnected!'); //сообщение при отсоединении
end;
end.

? Все файлы проекта и исполняемый файл клиентской программы находятся на прилагаемом к книге компакт-диске в папке Chapter_16Client, а файлы проекта и исполняемый файл серверной программы — в папке Chapter_16Server.

Оглавление книги


Генерация: 1.776. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз