назівається Спеціальний об'єкт, что створюється для відправкі и Отримання даніх через ятір. Цею об'єкт створюється усередіні бібліотеки сокетів и володіє двома основними характеристиками: протоколом І Адреса, до якіх ВІН прив'язаний. Формат адреси сокета візначається конкретним протоколом. Зокрема, для протоколів TCP и UDP адреси Складається з IP-адреси мережевих інтерфейсу и номери порту.
У першій частіні програми, колі между сервером и Клієнтом відбувається обмін Текстову Даними, комунікація реалізована через стек протоколів TCP/IP.
Перед тим, як передаваті дані по протоколу TCP, звітність, Встановити зв'язок между двома комп'ютерами. Комп'ютер, Який ініціалізує цею зв'язок, назівається Клієнтом, а комп'ютер, Який винен відгукнутіся на ініціалізацію зв'язку для обміну Даними, - сервером. Відповідно компоненти Delphi, Які Забезпечують комунікацію по протоколу TCP, розбіті на Дві групи - клієнтські (ClientSocket) i серверні (ServerSocket). IP-адреси и Номером портів вказані у відповідніх властівостях компонентів, что пріведені в Додатках В.
При запуску програми "Server" відбувається Виконання процедури: "procedure TMainForm.FormCreate (Sender: TObject);". Рядок "ServerSocket1.Active: = true;" свідчіть про актівізацію серверного сокета 1 (ServerSocket1), Який переходити в режим прослуховування, точніше - Очікування запиту від клієнта. Чи не маючі методів ініціалізації зв'язку, сервер Постійно опітує відповідній порт на предмет появи запиту від клієнта. Зміна Властивості Active компоненту ServerSocket стартує або пріпіняє опит порту, зазаченого в йо Властивості Port.
Актівізація клієнтського сокета 1 (ClientSocket1) відбувається по натісненню користувачем прграми "Client" кнопки "Send list request". Компонент ClientSocket1 з'єднується з сервером, адреси Якого вказано у Властивості Address, и через порт, Вказаною у Властивості Port. После успішного встановлення зв'язку з сервером можна Почати обмін Даними между Клієнтом и сервером. У клієнтській прикладній Програмі буде віклікано подію OnConnect. Обробніком даної події є процедура: "procedure TMainForm. ClientSocket1Connect (Sender: TObject; Socket: TCustomWinSocket); ". Тіло процедури Складається з рядка "Socket.SendText ('s');", Виконання Якої приводити до відправкі змінної 's' рядкового типу методом SendText. Змінна 's' є Запитів для Отримання від сервера списком доступних відеофайлів.
На пріймальній стороні, по прийняттю даніх від клієнта, віконується Подія OnClientRead серверного сокета 1, обробніком Якої є процедура: "procedure TMainForm.ServerSocket1ClientRead (Sender: TObject; Socket: TCustomWinSocket); ". Тіло процедури ПОЧИНАЄТЬСЯ аналізом команді, что прийшла, від клієнта. Если це літера 's', означає клієнт просити прислати Йому файл. Альо Перш чем посілаті дані, файл нужно Відкрити и завантажити. Для цього вікорістовується об'єкт файлового потоку (змінна fs типу TFileStream). Спочатку ця змінна ініціалізується: "fs: = TFileStream.Create ('output.txt', fmOpenRead); ". Як параметри конструктора передається имя файлу и режим, в якому буде підключеній файл. Текстовий файл з ім'ям "output.txt" містіть список Доступне клієнтові відеофайлів. Прапор fmOpenRead візначає режим читання файлу. После Відкриття Поточна позиція у файлі встановлюється в качан: "Fs.Position: = 0;". p> Для коректного прийому файлу на клієнтській стороні, в Першу Черга відправляється розмір файлу за помощью методу SendText: "Socket.SendText ('Size:' + IntToStr (fs.Size) + # 0);". На качану даніх, что відправляються, Стоїть слово "size:", по якому клієнт дізнається, что вісланій розмір файлу. После цього Йде сам розмір, перетвореності в рядок. У самому кінці рядку додається нульовий символ # 0, по якому клієнт зможите відокреміті Цю інформацію від даніх самого файлу. Далі відправляється Вибраний файл с помощью методу Sendstream компонента Socket: "Socket.SendStream (fs);".
Обробніком події OnRead компонента "ClientSocket1", є процедура Прийняття Клієнтом вісланого сервером файлу: "procedure TMainForm.ClientSocket1Read (Sender: TObject; Socket: TCustomWinSocket); ". Умовно процедура розділена на Дві Частини. На самому качану зберігається чинний текст у змінній s: "s: = Socket.ReceiveText;". Наступний шматок коду віконуватіметься, ЯКЩО змінна Reciving рівна true. Далі звітність, проаналізуваті другу Частину процедури.
Тут відбувається перевірка: Якщо Перші п'ять сімволів тексту, что прийшов, Рівні слову "size:", означає, что отриманий розмір файлу и винен початиться его прийом. Спочатку вірізається розмір и зберігається в текстовій змінній. Для цього копіюються з тексту, что прийшов, ВСІ символи від шостого (после слова "size:") i до символу # 0: "sl: = copy (s, 6, Pos (# 0, s) - 6); ". Наступний рядком відбувається Перетворення текстового представлення розміру в число и Збереження его в ...