Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpori_oop.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
441.86 Кб
Скачать
    1. Введення-виведення даних. Базові класи введення-виведення

Клас RandomAccessFile дозволяє організувати роботу з файлами в режимі прямого доступу, тобто вказувати зсув та розмір блока даних, над яким виконується операція введення-виведення.

Клас InputStream є базовим для більшості класів, на основі яких створюються потоки введення. Саме ці похідні класи і використовується на практиці. Щодо InputStream це абстрактний клас, який містить декілька корисних методів, а саме:

int read() – зчитує з вхідного потоку окремі байти як цілі числа та повертає –1, коли більше нема чого читати;

int read(byte b[]) – зчитує множину байтів в байтовий масив, повертаючи кількість реально введених байтів;

int read(byte b[], int off, int len) – також читає дані в байтовий масив, але дозволяє крім того задати ще зсув в масиві та максимальну кількість зчитаних байтів;

long skip(long n) – пропускає n байтів в потоці;

int available() – повертає кількість байтів, які є в потоці в даний момент;

void mark(int readlimit) – помічає поточну позицію в потоці, readlimit – кількість байтів, які можна прочитати з потоку до момента, коли помічена позиція втратить свою силу;

void reset() – повертається до поміченої позиції в потоці;

markSupported() – повертає бульове значення, яке вказує, чи можна в даному потоці відмічати позиції та повертатися до них;

void close() – закриває потік.

Як бачимо, список достатньо серйозний. З урахуванням того, що цей клас має аж шість прямих та чотири непрямих нащадки, детальне вивчення потокового введення потребує багато часу. Але ми нічого не сказали про ще один метод – про конструктор. Хоча саме тут немає нічого цікавого – він без параметрів, та й клас абстрактний.

Клас OutputStream утворює пару до класу InputStream. Основні методи:

void write(byte b)

void write(byte b[])

void write(byte b[], int off, int len)

void close()

void flush() – виконує примусовий запис всіх буферизованих вихідних даних.

Клас RandomAccessFile дозволяє організувати роботу з файлами в режимі прямого доступу, тобто вказувати зсув та розмір блока даних, над яким виконується операція введення-виведення.

Клас File призначений для роботи з заголовками каталогів та файлів. За допомогою цього класу можна отримати список файлів та каталогів, розташованих в заданому каталозі, створити або вилучити каталог, перейменувати файл або каталог і т. д.

За допомогою класа FileDescriptor можна перевірити ідентифікатор відкритого файла.

Клас StreamTokenizer дозволяє організувати виділення з вхідного потоку даних елементів, що відділяються один від іншого заданими розділювачами.

  1. Дати порівняльну характеристику протоколів стеку tcp/ip та udp.

IP – це протокол мережного рівня, який визначає куди саме будуть передаватись дані. IP характеризується як ненадійний протокол, тому що він не знаходить помилок і не виконує повторне пересилання даних. Що таке IP- та DNS-адреса можна прочитати в [2].

Протоколи TCP та UDP відносяться до транспортного рівня. Протокол TCP забезпечує надійний зв’язок на основі логічного з’єднання з неперервним потоком даних. Доставка TCP-пакета схожа з доставкою листа за замовленням.

З неперервним потоком даних. TCP забезпечує механізм передачі, що дозволяє пересилати довільну кількість байтів. Дані нарізаються на сегменти певної довжини, завдяки чому для рівня додатків емулюється неперервний потік даних.

На основі логічного з’єднання. Перед початком передачі даних TCP встановлює з віддаленою машиною з’єднання, обмінюючись службовою інформацією. Цей процес носить назву handshaking – рукостистискання. Комп’ютери домовляються між собою про основні параметри зв’язку.

Надійний. Якщо сегмент TCP втрачено або зіпсовано, реалізація TCP це знайде та повторно передасть необхідний сегмент.

Доставка UDP-пакета схожа з доставкою поштової картки, яку кидають у скриньку сподіваючись, що хтось її звідти рано чи пізно дістане.

Протокол UDP має такі характеристики:

Оснований на повідомленнях. UDP дозволяє додаткам пересилати інформацію у вигляді повідомлень (дейтаграм), які є одиницями передачі даних в UDP. Розподіл даних по окремим дейтаграмам має виконувати сам додаток.

Без встановлення логічного з’єднання. Ніякого обміну службовою інформацією на початку з’єднання. Інформація передається в припущенні, що приймальна сторона її очікує.

Ненадійний. UDP не має ані вбудованого механізму знаходження помилок, ані повторного пересилання спотворених або втрачених даних.

Як бачите, майже все говорить на користь TCP. Тоді для чого ж нам UDP, запитаєте Ви. Може тому що програмісту непросто реалізувати усі ті плюси, які ми виставили TCP? Навпаки, все це вже реалізовано і все це у нас є. Але справа в тому, що чудовий TCP потребує великих додаткових витрат, а це не завжди виправдано. Приклад використання UDP – служба часу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]