Описание протокола IChat'a
Версия для печати (txt).
------------------------------
Работа через выделенный сервер
------------------------------
мессага от клиента к серверу:
[Длина сообщения] [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"] [~~] [Текст подтверждения] [~]
Работа через выделенный сервер
------------------------------
мессага от клиента к серверу:
[Длина сообщения] [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"] [~~] [Текст подтверждения] [~]
IChat Incognito