змінній DataSize. Далі з тексту, что прийшов, відаляються ВСІ символи до першого нульового символу # 0, тоб відаляються інформація про розмір передаванням файлу. Змінна Reciving встановлюється рівною true. Ця змінна говорити про ті, что Почаїв передача файлу. Дані пріймаються пакетами розміром пріблізно по 8 Кбайт. Щоб Зберегти їх у файл, створюється Файловий Потік: "fs: = TFileStream.Create ('output.txt', fmCreate);". Як имя Указується "output.txt". Як прапор при відкрітті файлу Вказаною fmCreate, что прімушує Створити новий файл. Если такий файл Вже існує, то ВІН буде перезапісаній. Тепер звітність, вернуться до першої Частини процедури. p> Качан відбувається з перевіркі: Якщо змінна Reciving рівна true, означатиме, відбувається прийом даніх, и отриманий Черговий пакет файлу. ВІН зберігається тім же способом. После цього відбувається порівняння: Якщо розмір потоку Рівний отриманий розміру файлу, то файл чинний Повністю, и можна его закривати, вімікаті змінну Reciving и Виводити ПОВІДОМЛЕННЯ про вдалий прийом. Отримані дані відображаються на панелі "Available files list": "FileListBox1.Items.LoadFromFile ('Output.txt');". Властивості використаних в Програмі "Client" компонентів наведені в Додатках Г.
Назва Вибраного користувачем файлу поміщається в рядок введення "Chosen file" і відправляється на сервер натісненням кнопки "Send videofile request" (рис. 3). Обробніком події для натіснення даної кнопки є процедура: "procedure TMainForm.Button3Click (Sender: TObject); ". У тілі процедури Використання метод SendText для відправкі запиту клієнтськім сокетом 2 (ClientSocket2), Який актівізувався при запуску програми "Client" процедурою: "procedure TMainForm.FormCreate (Sender: TObject);". p> Актівізованій при запуску програми Серверне сокет 2 (ServerSocket2), пріймає запит и поміщає дані в рядок вводу "Request file ". Це відбувається по Виконання обробніка події OnClientRead компоненту ServerSocket2: "procedure TMainForm. ServerSocket2ClientRead (Sender: TObject; Socket: TCustomWinSocket); ". Властивості використаних в Програмі "Server" компонентів наведені в Додатках Д.
В
Рис. 3. Формування запиту Клієнтом
Затвердий запит, адміністратор натіскає кнопку "Adopt", после чего назва файлу Відображається в рядку вводу "Send file ". Перед відправленням файл відкрівається и Завантажується у Файловий Потік ініціалізацією змінної fs типу TfileStream: "procedure TMainForm.Button1Click (Sender: TObject); ". p> Унаслідок того, что протокол IP НЕ підтрімує шірокомовну розсилку при вікорістанні TCP, подалі процес передачі и прийому відеофайлу здійснюється за помощью протоколу UDP. Програмно Данії процес реалізованій за помощью Internet Direct (Indy) компонентів, что підтрімують нізькорівневу роботу як з сокетами, так и з найбільш загально протоколами Інтернету. За основу узятій компонент IdUDPServer, Який Використовують для ПІДТРИМКИ Мережева протоколу UDP.
Актівізованій при запуску програми "Server" компонент IdUDPServer почінає процес передачі відеофайлу при натісненні адміністратором кнопки "Send" (рис. 4).
В
Рис.4. Процес відправлення відеофайлу
Обробніком події на натіснення кнопки є процедура: "procedure TMainForm.SendBtnClick (Sender: TObject);", яка перевіряє Існування Вказаною файлу. У разі позитивного результату перевіркі, файл відкрівається и Завантажується в Потік. Подалі управління передачею файлу Указується процедурі: "procedure SendProcedure (FStream: TFileStream; UDPServer: TIdUDPServer; StatusLabel: Tlabel; ProgressBar: TProgressBar); ". Компонент IdUDPServer в Першу Черга посілає Значення кількості пакетів файлу, что відправляються, за помощью методу Send. Далі запускається цикл передачі файлу UDP пакетами розміром пріблізно по 40 Кбайт за помощью методу Send Buffer компоненту IdUDPServer.
Коженая пакет, відправленій за помощью UDP, складає одну дейтаграму. Отримані дейтаграмі складаються в буфер пріймаючого сокета и могут буті Отримані Тільки роздільно: за одну операцію читання з буфера программа, что вікорістовує сокет, может отріматі Тільки одну дейтаграму. Если в буфері лежить декілька дейтаграм, буде нужно декілька операцій читання, щоб Прочитати все. Крім того, одну дейтаграму НЕ можна отріматі з буфера по Частинами: вона винна буті прочитана Цілком за одну операцію. Прийом UDP пакетів на корістувальніцькій стороні Забезпечує клієнтській компонент IdUDPServer. p> При актівації, клієнтській IdUDPServer створює слухаючій Потік для вхідніх пакетів UDP. Для шкірного прийнятя пакету UDP IdUDPServer збуджує подію OnUDPRead в головному кодовому потоці. Обробніком даної події є процедура: "procedure TMainForm.UDPServerUDPRead (Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); ". После прийому Значення розміру Передання файлу, створюється Файловий Потік. UDP пакети пріймаються, Потік звільняється.
прийнятя відеофайл відтворюється відеопрогравачем, розташованому на вкла...