y"> * Парсинг вхідних повідомлень.
*
* @ param from мережевий адресу того, від кого прийшло повідомлення.
* @ param mes саме повідомлення.
*/void parseMessage (String from, String mes) {
// PRSN: nick (mes.startsWith (CMD_PRESENT)) {
// На маячок потрібно відповісти синхронізуючим повідомленням.
// У ньому передається список кімнат, до яких підключений користувач.
sendMessage (null, null, CMD_SYNC);
// Передаємо команду в систему відображення.
// Приклад: from: PRSN: nick (from + ":" + mes);
}
// SYNC: room_1: room_2 ... if (mes.startsWith (CMD_SYNC)) {
String [] split = mes.split (":");
// У циклі перебираємо всі назви кімнат у сінхросообщеніі.
for (int i = 1; i
// Знаходимо потрібну комнату.room = getRoomByName (split [i]);
// Додаємо в список адрес кімнати той,
// від кого прийшло це повідомлення.
if (room! = null). addAddress (from);
}
// Передаємо команду в систему відображення.
// Приклад: from: SYNC: room_1: room_2 ... (from + ":" + mes);
}
// QUITif (mes.startsWith (CMD_QUITE)) {
// Передаємо команду в систему відображення.
// Приклад: from: QUIT (from + ":" + mes);
}
// NICK: nickif (mes.startsWith (CMD_NICK)) {
// Передаємо команду в систему відображення.
// Приклад: from: NICK: nick (from + ":" + mes);
}
// MSG: room: messageif (mes.startsWith (CMD_MESSAGE)) {[] split = mes.split (":", 3); roomName = split [1]; p>
String message = split [2];
// Знаходимо на ім'я кімнату, в яку адресовано повідомлення.
NetRoom room = getRoomByName (roomName); (room! = null) {
// Якщо у кімнати стоїть мітка про необхідність захищеного
// з'єднання, то вхідне повідомлення неоходімо розшифрувати. (room.isProtected ()) {{
// Розшифровуємо вхідне повідомлення за допомогою
// збереженого закритого ключа. = RSACipher.decode (message, room.getKeyPair (). getPrivate ());
} catch (BadPaddingException e) {
// Якщо трапилася помилка при розшифровці, то передаємо
// необхідну інформацію в відображення.
// Приклад: from: INF...