Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Π’Ρ€ΡŽΠΊΠΈ ΠΈ эффСкты». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 49

Автор Π’Π°Π»Π΅Ρ€ΠΈΠΉ Борисок

IntToStr(imgScreen.Height));

//....ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅

stream := TMemoryStream.Create;

ReadStream(stream);

stream.Position := 0;

//....Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

imgScreen.Picture.Bitmap.LoadFromStream(stream);

stream.Clear;

stream.Free;

end;

end;

Π’ тСкстС листинга 11.8 создано большоС количСство ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², поэтому Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡΡΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π΅Ρ‚ смысла. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌΡΡ лишь Π½Π° Ρ‚ΠΎΠΌ, Π·Π°Ρ‡Π΅ΠΌ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ TForml.TimerlTimer прСдусмотрСно Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° получСния изобраТСния с сСрвСра.

ВсС Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сТатиС (Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ экрана наблюдаСмого ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° большС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° imgScreen) Π½Π° сторонС сСрвСра Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ сСрвСрноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, большСго процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° снятиС ΠΊΠΎΠΏΠΈΠΈ экрана. Π­Ρ‚ΠΎ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΡΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ изобраТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ экономит рСсурсы ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Но качСство сТатого изобраТСния Π² этом случаС получаСтся нСсколько Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ прСдоставляСм ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ Image Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Если ΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сТатиС изобраТСния Π½Π° сСрвСрС, возрастаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° ΡΠ΅Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠΎΠ»Π½ΠΎΡ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ экрана, Π° вся Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΡΠΆΠ°Ρ‚ΠΈΡŽ изобраТСния возлагаСтся Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ imgScreen (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ тратится процСссорноС врСмя Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°). ΠŸΡ€ΠΈ большом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ экрана наблюдаСмого ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° (ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ наблюдСнии сразу Π·Π° нСсколькими ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ) машина ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ссли ΠΎΠ½Π° нСдостаточно мощная, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ вСсьма ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎ Β«Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒΒ». ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ сТатого изобраТСния ΠΏΡ€ΠΈ этом получаСтся Π±ΠΎΠ»Π΅Π΅ высоким.

Π’ качСствС Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ эффСктивного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ большиС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ запросами Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСра слСТСния с ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ изобраТСния Π½Π° сСрвСрной сторонС (Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ машина сСрвСра Π½Π΅ являСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎΠΌΠΎΡ‰Π½ΠΎΠΉ).

11.4. ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π½ΠΈΠΊ

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ знакомства с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈIdTCPCLient ΠΈ IdTCPServer для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ сСтСвого взаимодСйствия рассмотрим созданиС ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрного прилоТСния – ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π½ΠΈΠΊΠ°. Как ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ ΠΈΠ· названия, это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ сообщСниями Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Ρ‡Π°Ρ‚Π°).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ нСсколько слоТнСС (Π² ΠΏΠ»Π°Π½Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ сСтСвого взаимодСйствия) ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π³Π»Π°Π²Ρ‹, Ρ‚ΠΎ рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ основныС этапы Π΅Π³ΠΎ проСктирования, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (начиная с Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ повСдСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра ΠΈ заканчивая нюансами Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).

ВрСбования ΠΊ клиСнтскому ΠΈ сСрвСрному прилоТСниям

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с клиСнтскими прилоТСниями Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности:

β€’ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ тСкст Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΡ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру;

β€’ ΠΎΡ‚ΡΡ‹Π»Π°Ρ‚ΡŒ сообщСния ΠΊΠ°ΠΊ всСм, Ρ‚Π°ΠΊ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ;

β€’ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ список ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π΅ (ΠΏΡ€ΠΈ этом список Π΄ΠΎΠ»ΠΆΠ΅Π½ автоматичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ присоСдинСнии Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ);

β€’ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ увСдомлСния ΠΎΠ± ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ присоСдинСнии Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (прямо Π² тСкстС Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°).

Π‘Π΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΡ€ΠΎΠΌΠ΅ управлСния ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ доставки сообщСний, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий (ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΎΡ‚ ΠΊΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠΌΡƒ послано Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ сообщСниС).

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сСрвСрного прилоТСния Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слоТности, связанныС с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊ сСрвСру Π±ΡƒΠ΄ΡƒΡ‚ постоянно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ сразу нСсколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ информация ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ постоянно Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ сСрвСром. НуТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ клиСнтского, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ – сСрвСрного прилоТСния ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, связанных с нСисправностями сСти.

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ рассылку клиСнтским прилоТСниям ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ с сСрвСра Π½Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚):

β€’ тСкста сообщСний;

β€’ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ присоСдинСнии ΠΈΠ»ΠΈ отсоСдинСнии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ сообщСний ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра

ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкстовыми сообщСниями (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с сообщСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°). Π‘Ρ‚Ρ€ΠΎΠΊΠ° любого сообщСния состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй: прСфикса ΠΈ тСкста сообщСния. ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ отдСляСтся ΠΎΡ‚ тСкста сообщСния символом: (Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅). По прСфиксу ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ сообщСниСм.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сообщСния ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° сСрвСру:

β€’ name: имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ – ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ этого сообщСния клиСнтская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сообщаСт сСрвСру, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (это имя Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ);

β€’ text: тСкст – ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ этого сообщСния сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π·ΠΎΡΠ»Π°Ρ‚ΡŒ тСкст всСм участникам Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ отправитСля);

β€’ имя_адрСсата: тСкст – ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ этого сообщСния сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ тСкст Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ прСфиксом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ имяадрСсата, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ копию Π°Π²Ρ‚ΠΎΡ€Ρƒ сообщСния.

К сообщСниям Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° относятся всС сообщСния, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ сСрвСром ΠΈ Π½Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с text: ΠΈΠ»ΠΈ name:.

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ клиСнтской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ сообщСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

β€’ ok: – ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ зарСгистрирован ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€;

β€’ error: сообщСниС_ΠΎΠ±_ошибкС – ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π΅. ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ этого сообщСния клиСнтская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ с тСкстом сообщСниС_ΠΎΠ±_ошибкС ΠΈ Ρ€Π°Π·ΠΎΡ€Π²Π°Ρ‚ΡŒ соСдинСниС с сСрвСром;

β€’ adduser: имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ – ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ сообщСния клиСнтская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строку имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² список участников Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°;

β€’ deluser: имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ – ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ сообщСния клиСнтская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ строку имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· списка участников Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°;

β€’ text: тСкст – клиСнтская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСкст ΠΊ тСксту Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°.

ΠŸΠ΅Ρ€Π΅Π΄ рассмотрСниСм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ клиСнтской ΠΈ сСрвСрной частСй скаТСм нСсколько слов ΠΎΠ± использовании ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сообщСний ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (name: имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ) ΠΈ сСрвСра (ok: ΠΈ error: сообщСниС_ΠΎΠ±_ошибкС). Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сСрвСра присоСдинСниС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Ρƒ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

1. ΠšΠ»ΠΈΠ΅Π½Ρ‚скоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ присоСдиняСтся ΠΊ сСрвСру (количСство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ, поэтому сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ Π»ΠΈΡˆΠ½Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ сообщСниС error: с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ тСкстом, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Ρ€Π°Π·ΠΎΡ€Π²Π°Ρ‚ΡŒ установлСнноС соСдинСниС).

2. ΠšΠ»ΠΈΠ΅Π½Ρ‚скоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ посылаСт сСрвСру сообщСниС с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (прСфикс name:).

3. Π•сли имя, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‚ΠΎ клиСнтскому ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ отправляСтся сообщСниС error: с пояснСниСм ошибки.

4. Π•сли имя свободно, Ρ‚ΠΎ сСрвСр сохраняСт Π΅Π³ΠΎ (ΠΈ рассылаСт Π΅Π³ΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ клиСнтским прилоТСниям), Π° Ρ‚Π°ΠΊΠΆΠ΅ посылаСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ присоСдинСнного ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ список всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π΅ (сообщСниС ok:).

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны ΠΏΡ€ΠΈ описании исходного ΠΊΠΎΠ΄Π° клиСнтского ΠΈ сСрвСрного ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

РСализация сСрвСра

Π‘Π΅Ρ€Π²Π΅Ρ€Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ с ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌ интСрфСйсом. Π€ΠΎΡ€ΠΌΠ° f rmServer прилоТСния Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ прСдставлСна Π½Π° рис. 11.6.

Рис. 11.6. Π€ΠΎΡ€ΠΌΠ° сСрвСра сообщСний

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ управлСния ListBox (имя IstEvents), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Ρ‹Π²ΠΎΠ΄Π° списка событий (присоСдинСниС, отсоСдинСниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сообщСний). Бписок помСщаСтся Π² Ρ€Π°ΠΌΠΊΡƒ GroupBoxl. Для списка ΠΈ Ρ€Π°ΠΌΠΊΠΈ Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства align = client.

ΠšΡ€ΠΎΠΌΠ΅ пСрСчислСнных элСмСнтов управлСния, Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ IdTCPServer (имя TCPServer)n Timer (имя Timerl). Для Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π·Π°Π΄Π°ΡŽΡ‚ΡΡ значСния свойств Enabled = True ΠΈ Intervel = 50. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TCPServer настраиваСм Π½Π° ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚Π° 12345, Π° Ρ‚Π°ΠΊΠΆΠ΅ устанавливаСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Active = True.

ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сСрвСра основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ (Unitl. pas). Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ условно ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ части: Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (рСгистрации ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, пСрСсылки тСкстовых сообщСний ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ Ρ‚. Π΄.), Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса TfrmServer).

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΈ ΠΈΡ… рассмотрСниС Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ прилоТСния (листинг 11.9)....

Листинг 11.9.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий сСрвСрного прилоТСния (Unitl.pas)

procedure TfrmServer.Timer1Timer(Sender: TObject);

begin

//Если Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎ скроСм ΠΎΠΊΠ½ΠΎ сСрвСра

if (not SERVERVISIBLE) then

begin

frmServer.Visible := False;

ShowWindow(Application.Handle,SW_HIDE);

end;

//Π’Π°ΠΉΠΌΠ΅Ρ€ большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½

Timer1.Enabled := False;

end;

procedure TfrmServer.TCPServerExecute(AThread: TIdPeerThread);

begin

//ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ сообщСниС, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠ΅Π΅ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°