- •Об'єктно-орієнтовані мови. Основні принципи об'єктно-орієнтованого програмування.
- •Відмінності мови Java від інших мов програмування
- •Основні типи даних мови Java.
- •Перетворення даних в програмах на Java.
- •Пакети класів, їх створення та використання.
- •Використання рядків в мові Java. Клас String.
- •Менеджери розташування. Їх призначення та використання Розкладки
- •FlowLayout (послідовне розташування)
- •GridLayout (табличне розташування)
- •BorderLayout (полярне розташування)
- •CardLayout (блокнотне розташування)
- •GridBagLayout (коміркове розташування)
- •Пакет java.Awt. Ієрархія класів в ньому. Клас Component.
- •Контейнери. Їх призначення та загальні методи контейнерів Контейнери
- •Загальні характеристика класу Component (див 13)
- •Використання контейнера Panel та основні його методи. Панель
- •Контейнер Frame, його особливості. Frame (Фрейми)
- •Графічні засоби мови Java. Клас Canvas.
- •Реалізація роботи прапорців та пермикачів. Checkbox (Прапорець та Перемикач)
- •Клас Graphics. Малювання графічних примітивів.
- •Виведення тексту. Клас Font.
- •Повідомлення та події. Поля та методи класу Event Класи подій
- •Обробка повідомлень миші. Основні методи.
- •Виведення растрових зображень. Класи Url та Image. Завантаження растрового зображення
- •Виведення зображення
- •Клас Image
- •Способи усунення мерехтіння при виведенні інформації на екран. Усунення мерехтіння
- •Потоки. Клас Thread.Створення потоків.
- •Створення потоків
- •Виняткові ситуації. Класи Throwable, Exception, Error. 29. Методи обробки виняткових ситуацій.
- •Аплети у порівнянні з додатками
- •Проблема безпеки
- •Включення аплетів в html-документ Створення аплетів
- •Введення-виведення даних. Базові класи введення-виведення
- •Дати порівняльну характеристику протоколів стеку tcp/ip та udp.
- •Створення сокетів tcp
- •4.3 Робота з потоковими сокетами
- •Клас Socket
- •Клас ServerSocket
- •Створення сокетів udp
- •Клас DatagramSocket
- •Клас DatagramPacket
- •Приклад серверного додатку, що реалізує датаграмний сокет.
- •Приклад клієнтського додатку, що реалізує датаграмний сокет.
Введення-виведення даних. Базові класи введення-виведення
Клас 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 дозволяє організувати виділення з вхідного потоку даних елементів, що відділяються один від іншого заданими розділювачами.
Дати порівняльну характеристику протоколів стеку 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 – служба часу.
