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

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

Жанры

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.

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

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

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

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

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

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9