Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
ВнизMailslotный чат Найти похожие ветки
← →
dimodim (2006-04-02 23:07) [0]Как реализоваь сабж.Есть чат Ичат , написанный на Делфи 6, но он устарел (Смайлы,мало функций и пр).Так как технологии развиваются , а чат 2001 года , то хотелось бы самому написать что-то аналогичное и мэилслотное.
Как я понял это можно реализовать с помощью сокетов .
Писать буду на Делфи 5 или Делфи 8
← →
Eraser © (2006-04-02 23:27) [1]
> dimodim (02.04.06 23:07)
советую отделить мух от котлет и всю сетевую часть организовать в виде отдельных ф-ий и возможно поместить в отдельную библиотеку. Чтобы сама функциональность программы не зависила от применяемого сетвого транспорта.
← →
Rouse_ © (2006-04-03 09:58) [2]Какие именно развившиеся технологии ты хочешь добавить в чат?
← →
dimodim (2006-04-03 16:54) [3]Rouse
Начнем со смайлов (которых там мало) , заканчивая аватарами для пользователей
--
Люди напиште алгоритм или объяснте как это можно организовать с помощью ClientSocket.
← →
Belorus © (2006-04-03 17:45) [4]Итак начнём
Ичатом я пользуюсь около 4 лет.
Сейчас стоит 1.20 и IchatAdmin.
В ичате 1.20 кажется 16 смайлов вполне прилично.
Но...
Я за всю жизнь не видел не одного реально удобного чата с передачей
1. Текста
2. Файлов
3. Голоса(реалтайм)
4. Видео(реалтайм)
5. С поддержкой плугинов.
И не так давно стал писать свой чат. К сожалению с Мэйлслотами не разобрался и стал делать на основе выделеного сервера. То есть на одой машине запущено сервер приложение.
Если разберусь - расскажу, если нет то рад буду получить сам эту инфу...
А вообще давай писАть вместе :-)
ICQ 262-772-766
← →
Rouse_ © (2006-04-03 20:57) [5]
> Начнем со смайлов (которых там мало) , заканчивая аватарами
> для пользователей
Ужас, технология за пять лет развилась до смайлов с аватарами :)
Едем к "начинающим"...
← →
dimodim (2006-04-03 21:27) [6]А зря ты меня к начинающим приписал вопрос довольно актуальный
-------------
> Belorus © (03.04.06 17:45) [4]
> И не так давно стал писать свой чат. К сожалению с Мэйлслотами
> не разобрался и стал делать на основе выделеного сервера.
> То есть на одой машине запущено сервер приложение.
Ты знеш с сервером легко . а с мэил слотами трудне.
Я дуаю что мэилслоты можно эмулировать запуская как ClientSocket tak i ServerSocket
← →
dimodim (2006-04-03 21:31) [7]{[S foruma v nete mne bi xotelos uznat kak peredat paket]]]
Имя MailSlot"a: ichat047, формат аналогичен нижеприведенному.
Далее, перейдем в формату тела сообщения (после расшифровки)
[~] "ichat" [~~] [Счетчик ASCII] [~~] [Отправитель] [~~] [CMD] [~~] [параметры команды]
[Счетчик ASCII] - счетчик сообщений, начиная с 1, увеличивается на 1 с каждым сообщением
[Отправитель] - сигнатура отправителя (аналогично - см. выше)
[~~] - разделитель, два байта - 0x13 0x13
[CMD] - команда, см. ниже
Ниже приведены используемые iChat команды:
Имя линии для общего чата - iTCniaM
DISCONNECT - покинуть линию (или общий чат)
[Имя линии] [~]
CONNECT - войти в линию (общий чат)
[Имя линии] [~~] [Логин] [~~] [Ник] [~~] [~~] [Away_сообщение] [~~]
[Получатель | "*"] [~~] [Версия] [~~] [Статус] [~]
CREATE_LINE - создание линии
[Имя линии] [~~] [Пароль] [~~] [Отправитель] [~]
REFRESH - обновить информацию в списке пользователей, посылается с периодичностью ок. 1 мин
[Имя линии | "*"] [~~] [Логин] [~~] [Ник] [~~] [~~] [Away_сообщение] [~~] [Получатель | "*"] [~~] [Версия] [~~] [Статус] [~]
STATUS_REQ - запрос статуса у конкретного чела
[~]
STATUS - выдать статус
[Статус] [~~] [Away_сообщение] [~]
BOARD - обновить сообщение в доске объявлений
[Номер куска] [~~] [Текст сообщения] [~]
TEXT - паблик сообщение
[Линия] [~~] [Текст] [~~] [Получатель | "*" | ""] [~]
ME - /me сообщение
[Линия] [~~] [Текст] [~~] [Получатель | "*"] [~]
TEXT - приватное сообщение, отправляет себе и получателю...
["gsMTCI"] [~~] [Текст] [~~] [Ник отправителя] [~]
RECIEVED - подтверждение о получении сообщения
["gsMTCI"] [~~] [Текст подтверждения] [~]
Теперь самое интересное - ШИФРОВАНИЕ ;) Чат использует алгоритм шифрования RC4 с паролем "tahci". Для тех, кому это мало что говорит, ниже приведена процедура кодирования/декодирования (алгоритм обратимый - то есть, для кодирования и декодирования используется одна процедура), реализующая этот алгоритм (на Delphi):
var str,str_dec:array[0..MAX_MSG_SIZE-1] of byte;
{str,str_dec - массивы в которых лежат сообщения (кодированное и декодированное соответсвенно)}
procedure DecodeMessage(leng:integer);
//leng - длина закодированного пакета
const s:string="tahci"; //ключ
var i,j,sw:byte;
KeyLen,k:word;
fs:array [0..255] of byte;
begin
{$R-}
KeyLen:=Length(s);
j:=0;
for i:=0 to 255 do fs[i]:=i;
for i:=0 to 255 do
begin
j:=j+fs[i]+byte(s[(i mod KeyLen)+1]);
sw:=fs[i];
fs[i]:=fs[j];
fs[j]:=sw;
end;
i:=0;
j:=0;
for k:=0 to (leng-1) do
begin
i:=i+1;
j:=j+fs[i];
sw:=fs[i];
fs[i]:=fs[j];
fs[j]:=sw;
sw:=fs[i]+fs[j];
str_dec[k]:=fs[sw] xor str[k];
end;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.06 c