Чтение онлайн

на главную - закладки

Жанры

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

Парижский Сергей Михайлович

Шрифт:

 Client.Active:=False; //отключаемся от сервера

end;

При нажатии кнопки Disconnect мы перестаем передавать координаты указателя на сервер и отсоединяемся от него.

Для того чтобы на сервере не возникало ошибок при аварийном выключении клиента, создайте обработчик события формы OnDestroy и добавьте в него следующий код:

procedure TForm1.FormDestroy(Sender: TObject);

begin

 Client.Close; //закрываем соединение

 Client.Active:=False; //отключаемся от сервера

end;

При аварийном завершении программы закрывается соединение и выполняется отключение от сервера.

Для уведомления пользователя об успешном соединении с сервером создайте обработчик события client.OnConnect:

procedure TForm1.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);

begin

 ShowMessage('Connected!'); //показать сообщение

end;

Для реализации аналогичного действия при отсоединении от сервера, следует создать обработчик события OnDisconnect:

procedure TForml.ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);

begin

 ShowMessage('Disconnected!'); //сообщение при отсоединении

end;

Теперь обработаем событие OnTimer для компонента Timer:

procedure TForm1.Timer1Timer(Sender: TObject);

var

 cur:TPoint; //хранит координаты указателя мыши

begin

 GetCursorPos(cur); //узнаем координаты указателя мыши

 //отправляем данные на сервер

 Client.Socket.SendText(IntToStr(cur.X) +'_' + IntToStr(cur.Y));

end;

Каждые полсекунды мы будем получать координаты указателя мыши и отправлять их на сервер. Программа-клиент полностью готова. Теперь разработаем программу-сервер.

Разработка серверной программы

Создайте новый проект Delphi. Разместите на форме главный компонент программы — ServerSocket категории Internet и измените значение его свойства Port на 2801.

Первым делом, обеспечим нашей форме невидимость. Создайте обработчик события формы OnPaint и добавьте в него следующий код:

procedure TForm1.FormPaint(Sender: TObject);

begin

 Form1.Hide;

end;

Для того чтобы активизировать сервер при запуске программы, необходимо обработать событие формы OnCreate:

procedure TForm1.FormCreate(Sender: TObject);

begin

 ServerSocket1.Active:= True; //активизировать сервер

end;

Для того чтобы при выходе из программы сервер отключался, необходимо обработать событие формы OnDestroy:

procedure TForm1.FormDestroy(Sender: TObject);

begin

 ServerSocket1.Active:= False; //отключаем сервер

end;

Теперь осталось только обработать событие OnClientRead компонента ServerSocket. Это событие будет происходить каждый раз, когда будет поступать команда от клиента. Код обработчика этого события имеет следующий вид:

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;

При получении текста мы считываем в отдельные переменные значение координат указателя по X и по Y. Затем изменяем координаты на те, которые только что получили от клиента.

Теперь программа полностью готова, и для того чтобы протестировать ее, необходимо иметь хотя бы два компьютера, объединенные в локальную сеть или подключенные к Internet.

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

Поделиться:
Популярные книги

Linux программирование в примерах

Роббинс Арнольд
Компьютеры и Интернет:
программирование
ос и сети
5.00
рейтинг книги
Linux программирование в примерах

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Барон переписывает правила

Ренгач Евгений
10. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Барон переписывает правила

Источник

Билик Дмитрий Александрович
11. Бедовый
Фантастика:
юмористическое фэнтези
городское фэнтези
мистика
7.00
рейтинг книги
Источник

Воспоминания о Корнее Чуковском

Коллектив авторов
Документальная литература:
биографии и мемуары
6.25
рейтинг книги
Воспоминания о Корнее Чуковском

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV

Кодекс Охотника. Книга XVIII

Винокуров Юрий
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVIII

Кости холмов

Иггульден Конн
3. Чингисхан
Проза:
историческая проза
8.12
рейтинг книги
Кости холмов

Бродяга 3

Первухин Андрей Евгеньевич
3. Бродяга
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Бродяга 3

Газлайтер. Том 8

Володин Григорий Григорьевич
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Скай О`Малли

Смолл Бертрис
1. Сага о Скай О`Малли
Любовные романы:
исторические любовные романы
8.64
рейтинг книги
Скай О`Малли

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Черный Маг Императора 18

Герда Александр
18. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 18

Убивая маску

Метельский Николай Александрович
13. Унесенный ветром
Фантастика:
боевая фантастика
5.75
рейтинг книги
Убивая маску