Описание протокола IChat'a

------------------------------
Работа через выделенный сервер
------------------------------

мессага от клиента к серверу:

[Длина сообщения] [0x00] [Отправитель] [0x00] [CMD] [0x00] [Получатель | "*"] [0x00] [Сообщение]

[0x00] - разделительный байт (признак конца строки)
[Длина сообщения] - длина сообщения ASCII (учитывает поля, начиная с [Отправитель])
[Отправитель] - сигнатура отправителя (192.168.13.6/NETBIOS-NAME/login)
[CMD] - команда серверу, всегда "FORWARD"
[Получатель] - сигнатура получателя (аналогично как и отправитель), либо "*"

[Сообщение] - зашифрованное тело сообщения

от сервера клиенту:

[Длина сообщения] [0x00] [CMD] [0x00] [Сообщение]

[Длина сообщения] - длина сообщения ASCII (учитывает поля, начиная с [CMD])
[CMD] - команда клиенту, всегда "FORWARD"
[Сообщение] - зашифрованное тело сообщения

-----------------------------
Работа через mailslots
-----------------------------

НЕ ИЗУЧАЛОСЬ

-------------------------------------------
Формат тела сообщения (после расшифровки)
-------------------------------------------

[~] "ichat" [~~] [Счетчик ASCII] [~~] [Отправитель] [~~] [CMD] [~~] [параметры команды]

[Счетчик ASCII] - счетчик сообщений, начиная с 1, увеличивается на 1 с каждым сообщением
[Отправитель] - сигнатура отправителя (аналогично - см. выше)
[~~] - разделитель, два байта - 0x13 0x13
[CMD] - команда, см. ниже

Команды:

Имя линии для общего чата - iTCniaM
----------
DISCONNECT - покинуть линию (или общий чат)

[Имя линии] [~]

----------
CONNECT - войти в линию (общий чат)

[Имя линии] [~~] [Логин] [~~] [Ник] [~~] [~~] [Away_сообщение] [~~] [Получатель | "*"] [~~]
[Версия] [~~] [Статус] [~]

----------
CREATE_LINE - создание линии

[Имя линии] [~~] [Пароль] [~~] [Отправитель] [~]

----------
REFRESH - обновить информацию в списке пользователей, посылается с периодичностью ок. 1 мин

[Имя линии | "*"] [~~] [Логин] [~~] [Ник] [~~] [~~] [Away_сообщение] [~~] [Получатель | "*"] [~~]
[Версия] [~~] [Статус] [~]

----------
STATUS_REQ - запрос статуса у конкретного чела

[~]

----------
STATUS - выдать статус

[Статус] [~~] [Away_сообщение] [~]

----------
BOARD - обновить сообщение в доске объявлений

[Номер куска] [~~] [Текст сообщения] [~]

----------
TEXT - паблик сообщение

[Линия] [~~] [Текст] [~~] [Получатель | "*" | ""] [~]

----------
ME - /me сообщение

[Линия] [~~] [Текст] [~~] [Получатель | "*"] [~]

----------
TEXT - приватное сообщение, отправляет себе и получателю...

["gsMTCI"] [~~] [Текст] [~~] [Ник отправителя] [~]

----------
RECIEVED - подтверждение о получении сообщения

["gsMTCI"] [~~] [Текст подтверждения] [~]