назв всіх кімнат, в
* яких складається клієнт.
* Приклад: SYNC: room1: room2: ...
*/static final String CMD_SYNC = "SYNC";
/**
* Ідентифікатор команди виходу. Команда широко-
* віщальні відсилається при виході з клієнтської
* програми.
* Приклад: QUIT
*/static final String CMD_QUITE = "QUIT";
/**
* Ідентифікатор команди ініціалізації захищеного
* з'єднання. Разом з командою відсилається відкритий
* ключ, за допомогою якого будуть шифруватися вихідні
* повідомлення.
* Приклад: INIT: public_key
*/
public static final String CMD_PRV_INIT = "INIT";
/**
* Ідентифікатор команди підтвердження встановлення
* захищеного з'єднання. Разом з командою передається
* відкритий ключ для шифрування вхідних повідомлень.
* Приклад: ACPT: public_key
*/static final String CMD_PRV_ACCEPT = "ACPT";
/**
* Ідентифікатор команди вхідного повідомлення. Разом
* з командою передається назва кімнати, в яку
* адресоване повідомлення, і саме повідомлення.
* Приклад: MSG: room: message
*/static final String CMD_MESSAGE = "MSG";
Прийом UDP пакетів з UDP сокета, слухача певний порт, організований у вигляді окремої нитки в програмі. Цю нитку запускає метод runRecievingProcess (), опис якого представлено нижче:
/**
* Даний метод запускає процес прийому вхідних
* UDP пакетів в окремій нитки.
*/void runRecievingProcess () {Thread (new Runnable () {
@ Overridevoid run () {ds = null; packet = null; [] buf = new byte [BUF_LENTH];
try {
// створюємо UDP рада, що слухає вхідні з'єднання
// на порт port. = new DatagramSocket (port);
} catch (SocketException e) {. printStackTrace ();
}
// Створюємо пакет на основі буфера і вказівки його довжини,
// в який буде записаний входить пакет даних.
packet = new DatagramPacket (buf, buf.length);
// Нескінченний цикл для прийому всіх вхідних UDP пакетів.
while (true) {{
// Приймаємо UDP пакет. . Receive (packet);