Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
9-1128434814
3d[Power]__
2005-10-04 18:06
2006.04.16
Простая физ симуляция


2-1143818838
gidd
2006-03-31 19:27
2006.04.16
Тема письма


15-1143537417
vidiv
2006-03-28 13:16
2006.04.16
Что такое "Графо-манство"


2-1144224140
vegarulez
2006-04-05 12:02
2006.04.16
Как сделать, чтобы в bitmap button`a добавлялся i-ый файл?


2-1138920015
Sergio77
2006-02-03 01:40
2006.04.16
MySql + dbExpress + Delphi 2005, кто может помочь?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский