myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему

> Свой Dc++ Клиент, Нужен второй разработчик

Теги
Нет тегов для показа
Kinjal
сообщение 4.3.2009, 0:25
Сообщение #1


Абсолютный новичок


Группа: Пользователи
Сообщений: 7
Регистрация: 4.3.2009
Пользователь №: 2 467
Спасибо сказали: 0 раз




Всем привет.

Пару дней назад появилось желание написать свой клиент, отличный от стронга и его клонов(в том числе визуально, по меню настроек, и даже в используемом языке программирования :-)). Немного урезанный по функциональности(в стронге достаточно функций которыми я не пользуюсь), но и со своими фишками.

И в общем, дело такое, что нужен второй разработчик - дизайнер-программер на Делфе который бы хотел поучавствовать в проекте, т.к. у меня совершенно нет вкуса - нужен человек который бы сделал оформление для программы и меню настроек.

Ну и прикладываю скриншот(на нем - законченная серверная часть(client<->hub)), чтобы показать, что разговор не на пустом месте, а есть определенные наработки.
Прикрепленные файлы
Прикрепленный файл  client.jpg ( 116.36 килобайт ) Кол-во скачиваний: 272
 
Go to the top of the page
+Quote Post
Setuper
сообщение 4.3.2009, 0:30
Сообщение #2


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1703 раза




Нет ли желания у автора сделать консольную версию клиента? В этом случае и дизайнера не нужно будет искать, и актуальная программа получится. Хотя можно сделать и консольную версию и версию с GUI.
Go to the top of the page
+Quote Post
Kinjal
сообщение 4.3.2009, 2:39
Сообщение #3


Абсолютный новичок


Группа: Пользователи
Сообщений: 7
Регистрация: 4.3.2009
Пользователь №: 2 467
Спасибо сказали: 0 раз




Ну эм, консольную сделать так то не сложно, вот только не пойму зачем?
Go to the top of the page
+Quote Post
mariner
сообщение 4.3.2009, 10:09
Сообщение #4


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




для работы как служба. на файловом сервенре. тут как бэ все ясно
Go to the top of the page
+Quote Post
dmvn
сообщение 5.3.2009, 11:04
Сообщение #5


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




Я в своё время написал на C некоторую консольную штуковину для линковки чатов двух хабов -- она подключается к двум хабам одновременно и перекидывает сообщения с одного на другой (и наоборот). В принципе, можно ее расширить и сделать полноценный консольный ДЦ-клиент.
Причем у меня она собирается и работает как под мастдаем, так и под Linux... у меня наверное времени на настоящий клиент сейчас не хватит, но все сырцы могу выдать) допиливайте ))

P.S. по теме: но почему на Delphi?! это же кхм... недоязык. к тому же автоматически лишаемся кросс-платформенности. Уж тогда на C++ и на каком-нить Qt...
Go to the top of the page
+Quote Post
Setuper
сообщение 5.3.2009, 16:50
Сообщение #6


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1703 раза




Линковать хабы и справляться с функциями клиента - это очень разные вещи, поэтому для написания полноценного клиента не думаю, что код линковщика поможет, разве что итак известные механизмы обработки команд оттуда можно взять. Исходники выкладывай - посмотим)))
Go to the top of the page
+Quote Post
dmvn
сообщение 5.3.2009, 22:29
Сообщение #7


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




ну в общем да, не оригинальность тут никто и не претендует big_smile.gif
сырцы тут: http://big.vip-zone.su/files/hublink/hublink.zip
там была сделана попытка написать библиотеку функций для работы с DC-хабом ( hubconn.{cpp,h} ). естественно, в ней есть только обработка команд, связанных с чатом + буферизация и разбор команд из сокета (в некотором приближении).
но уж что есть то есть, может кому пригодится -- вдруг кто саму идею разовьет и дополнит...
Go to the top of the page
+Quote Post
SerJo
сообщение 6.3.2009, 21:58
Сообщение #8


Абсолютный новичок


Группа: Пользователи
Сообщений: 7
Регистрация: 27.1.2009
Пользователь №: 1 995
Спасибо сказали: 0 раз




По части дизайна могу помочь. Тебя интересует сами иконки программы?
Ну как по мне то тут надо много единомышленников задействовать, потому что как не как новый движок ДС++ и он естественно довольно сырой
Go to the top of the page
+Quote Post
Setuper
сообщение 7.3.2009, 2:58
Сообщение #9


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1703 раза




Самое главное, лично для меня, так это чтобы клиент был кросс-платформенным, быстрым (без всяких лишних наворотов), маленьким, консольным и с открытом С++ кодом.
Если бы данный клиент подходит по этим параметрам, то я бы посодействовал в его создании)))


Спасибо сказали:
Go to the top of the page
+Quote Post
Stribog
сообщение 7.3.2009, 10:55
Сообщение #10


Участник
**

Группа: Пользователи
Сообщений: 46
Регистрация: 11.2.2009
Пользователь №: 2 187
Спасибо сказали: 3 раза




Здравствуйте форучане, может мне кто-нибудь помочь?
Я хочу написать программу на С++, что-то похожее на DC++ клиента, но я не знаю как организовать процедуру "рукопожатия хаба с клиентом" ( какой посылать ответ на $lock ) .
Помогите кто чем может !!!

P.S не стал создавать новую тему, т.к. эта тема подходит по тематике
Go to the top of the page
+Quote Post
PomanoB
сообщение 7.3.2009, 11:43
Сообщение #11


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




http://mydc.ru/topic915.html

Вообще на $Lock можно отправлять любой $Key ))
По крайней мере у меня это прокатывало
Go to the top of the page
+Quote Post
dmvn
сообщение 7.3.2009, 11:46
Сообщение #12


InstaHub dev.
***

Группа: Пользователи
Сообщений: 91
Регистрация: 25.2.2009
Пользователь №: 2 377
Спасибо сказали: 10 раз




Да что ты говоришь? может быть ты на таком глупом хабе проверял, который это не контролирует? big_smile.gif

вот кусочек преобразования Lock в Key. 100% работоспособен, выдран из исходников выложенного чуть выше в этой теме моего hublink.
Код
string HubConn::lockToKey(const string& lock)
{
    int len = lock.length();
    char *key = new char[len+1];
    
    for(int i = 1; i < len; i++) key[i] = lock[i] ^ lock[i-1];
    key[0] = lock[0] ^ lock[len-1] ^ lock[len-2] ^ 5;

    for(int i = 0; i < len; i++) key[i] = ((key[i]<<4) & 0xF0) | ((key[i]>>4) & 0x0F);

    string result;
    for (int i = 0; i < len; i++)
    {
        char c = key[i];
        if (c == 0 || c == 5 || c == 36 || c == 96 || c == 124 || c == 126)
        {
            char buf[16];
#ifdef _WIN32
            sprintf_s(buf, 16, "/%%DCN%03d%%/", key[i]);
#else
            sprintf(buf, "/%%DCN%03d%%/", key[i]);
#endif
               result += buf;
        }
        else result += c;
    }
    delete key;
    return result;
}


UPD:
Для С++ Builder вместо sprintf_s юзаем обычный sprintf, также как и для не-win32.
для MSVC очень старых версий (6.0 и ниже)-- тоже.
А вообще это просто safe-вариант этой функции, в котором явно указана максимальная длина буфера, куда он будет фигачить результат.
Go to the top of the page
+Quote Post
PomanoB
сообщение 7.3.2009, 12:24
Сообщение #13


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




Да, PtokaX, YnHub , VerliHub - очень глупые хабы да)
Go to the top of the page
+Quote Post
mariner
сообщение 7.3.2009, 12:26
Сообщение #14


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




ахаха, dmvn, у него внешний бот от CS есть. Заходит на хаб как клиент. ДУмаю Романов знает кое в чем толк.
Go to the top of the page
+Quote Post
Stribog
сообщение 7.3.2009, 12:34
Сообщение #15


Участник
**

Группа: Пользователи
Сообщений: 46
Регистрация: 11.2.2009
Пользователь №: 2 187
Спасибо сказали: 3 раза




Цитата(dmvn @ 7.3.2009, 11:46) *
вот кусочек преобразования Lock в Key. 100% работоспособен, выдран из исходников выложенного чуть выше в этой теме моего hublink.


Спасибо конечно big_smile.gif , если честно то я как раз хотел из него взять, но у меня не понимает команду sprintf_s и при компиляции выдает ошибку E2268 Call to undefined function 'sprintf_s'

Искал в гугле, но он ничего вразумительного про sprintf_s не сказал...
Компилировал CodeGear™ C++Builder® 2009 Version 12.0.3170.16989

dmvn, вы не могли бы пояснить мне что это за функция (sprintf_s) или чем её можно заменить?

Вот такая вот проблема...

Цитата(PomanoB @ 7.3.2009, 11:43) *
http://mydc.ru/topic915.html

Вообще на $Lock можно отправлять любой $Key ))
По крайней мере у меня это прокатывало

PomanoB, я видел этот пост и там не описан алгоритм ответа на $lock. А что касается "Вообще на $Lock можно отправлять любой $Key" - это точно не вариант.
Go to the top of the page
+Quote Post
Setuper
сообщение 7.3.2009, 12:50
Сообщение #16


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1703 раза




На некоторых хабах проверка ключа $lock может быть отключена, но, как говориться раз на раз не приходится. На одном хабе отключена, на другом включена, поэтому при написании клиента делать механизм отсылки хабу ключа $lock нужно обязательно!

Код
void cDCProto::Lock2Key(const string &Lock, string &Key)
{
    int count = 0, len = Lock.size(), offset = 0;
    char *key = 0, *tkey= 0;
    char * lock = new char[len+1];
    UnEscapeChars(Lock, lock, len, true);
    
    key = new char[len+1];
    
    key[0] = lock[0] ^ lock[len - 1] ^ lock[len - 2] ^ 5;
    while(++count < len) key[count] = lock[count] ^ lock[count - 1];
    key[len]=0;
    
    count = 0;
    while(count++ < len)
        key[count - 1] = ((key[count - 1] << 4)) | ((key[count - 1] >> 4));
    
    
    EscapeChars(key, len, Key, true);
    delete [] key;
    delete [] lock;
}

void cDCProto::UnEscapeChars(const string &src, char *dst, int &len ,bool WithDCN)
{
    size_t pos, pos2 = 0;
    string start, end;
    unsigned char c;
    int i = 0;
    
    if (!WithDCN) {
        start = "$#";
        end =";";
    } else {
        start = "/%DCN";
        end = "%/";
    }
    
    pos = src.find(start);
    while ((pos != src.npos) && (i < src.size()))
    {
        if (pos > pos2) {
            memcpy(dst + i, src.c_str() + pos2, pos - pos2);
            i += pos - pos2;
        }
        pos2 = src.find(end, pos);
        if ((pos2 != src.npos) &&
            ((pos2 - pos) <= (start.size()+3))) {
                c = atoi(src.substr(pos + start.size(), 3).c_str());
                dst[i++] = c;
                pos2 += end.size();
        }
        pos = src.find(start, pos + 1);
    }
    if (pos2 < src.size()) {
        memcpy(dst + i, src.c_str() + pos2, src.size() - pos2 + 1);
        i += src.size() - pos2;
    }
    len = i;
}

void cDCProto::EscapeChars(const char *buf, int len, string &dest, bool WithDCN)
{
    dest ="";
    unsigned char c;
    ostringstream os;
    while(len-- > 0)
    {
        c = *(buf++);
        switch(c)
        {
            case 0: case 5: case 36: case 96: case 124: case 126:
                os.str("");
                if (! WithDCN) os << "&#" << unsigned(c) << ";";
                else {
                    os.fill('0');
                    os << "/%DCN" << unsigned(c);
                    os.width(0);
                    os << "%/";
                }
                dest += os.str();
                break;
            default: dest += c; break;
        };
    }
}


sprintf_s - это функция VS, в билдере её нету. Что делает эта функция можно догадаться, а вообще у нас тут не форум для разъяснения синтаксиса языка С++. В интернете этого добра полно, поэтому по поводу синтаксиса языка С++ спрашивай на специализированных форумах.

Всё же советую перейти на VS, так как в подавляющем большинстве крупных компаний всё пишется именно на VS.
Go to the top of the page
+Quote Post
Kinjal
сообщение 7.3.2009, 21:51
Сообщение #17


Абсолютный новичок


Группа: Пользователи
Сообщений: 7
Регистрация: 4.3.2009
Пользователь №: 2 467
Спасибо сказали: 0 раз




>но почему на Delphi?!
1. Потому что мне его возможностей за глаза.
2. Он не популярен в сравнении с Си, от того чувствешь себя частью небольшой, но очень гордой семьи big_smile.gif
3. На нем удобно делать визуальные компоненты и скиновые "движочки" с необходимой функциональностью для софтины.

>это же кхм... недоязык.
Ну что за детсад... базовые арифметические операции(+, -, /, *, целочисленное диление, остаток целочисленного деления, булевые операции, логические поразрядные операции), классы(с поддержкой наследования и полиморфизма, разумеется) и вариации объявления их методов(public, protected, private, property, перекрытие(override), конструкторы, деструкторы, помошники класса), for-while-repeat(плюс операторы прерывания циклов: break, continue, exit, abort)/if-else/switch-case-with/процедуры-функции(а так же вариации их объявления: предварительное, интерфейсное, внешнее, типовое, "перегрузочное"(overload), встраиваемое(inline), небезопасное(unsafe), анонимное), /основные типы(порядковые, булевые, символьные, неизвестные типы, структурные типы, целые типы, действительные типы(имеющие дробную часть), встроенные типы и типы определяемые пользователем)/приведение типов/ссылки-указатели/структуры(а так же перечисления, множества)/константы-типизированные константы/использование блоков ассемблера/try..except..finally/массивы(статические, динамические, одномерные, многомерные)/интерфейсы, перегрузка операций(операторов)/шаблоны(generics).
Возможно что-то забыл.

Считаете, выше перечисленного вам не хватит для создания полноценного Direct Connect клиента?
Лично мне - за глаза.

Но если есть претензии к IDE, а не к языку, то могу согласится что официальная борландовская/кодгировская ИДЕ - багнутая и её поведение не всегда предсказуемо.

>к тому же автоматически лишаемся кросс-платформенности.
А мне на неё пофик - я кроме виндоуса других операционок не признаю.

>на каком-нить Qt...
У меня свой скиновой движок - с теми функциями, которые мне нужны, и ничего лишнего. Просто потому что мне в этом плане проще написать своё, чем капатся в чужом.

>По части дизайна могу помочь. Тебя интересует сами иконки программы?
Не только иконки, но и в целом само оформление программы. Например... логотип, или "окно чата будет тут, такой расцевткой, такой формы, форма табов такая, список юзеров будет тут, форма у него будет этакая, табы у него будут там-то" big_smile.gif

>Ну как по мне то тут надо много единомышленников задействовать,
Совсем не зачем, я с технической частью сам легко справлюсь, разве что потом надо будет собрать народ и дружно потестить клиент в разных условиях(в частности чтобы какой-нить админ хаба его потестил с разными настройками хабов, т.к. на хабах, которые у меня установлены локально для тестинга, стоят стандартные настройки, с которыми и тестирую клиент) и на разных хабах(я тестю тока на YnHub, и иногда на Ptokax). Для проекта, и всего задуманного мною для него функционала, двух человек достаточно. Один - отвечает за всё то, что связано с технической частью клиента, второй - с интерфейсом(визуальные компоненты(типа там - окошко чата с поддержкой табов) и картинки(лого, иконки, ...)). Но у меня ещё есть два кореша, которые по надобности помогут с внутренним тестингом и какой-нить мелкой функциональностью, так что программеры как таковые есть, но нету дизайнера big_smile.gif

>потому что как не как новый движок ДС++ и он естественно довольно сырой
Разработка хоть и не второй год ведётся, но на данный момент у меня клиент очень даже стабилен, хотя и умеет не так много как стронг, но я просто основательно тестю у него каждую функцию. С ним уже сейчас можно спокойно бегать по хабам и общатцо. Плюс важнейшая часть ДЦ - высчитывание TTH - у меня реализовано на уровне стронга в плане скорости, причем судя по тестам, которые мне сделали по просьбе - высчитывает наровне со стронгом.
Правда, с другой стороны, мне не совсем понятны две вещи стронга - его функция сегментная закачка(а именно её технический аспект - каким образом работает эта функция), и каким образом стронг определяет пассивность/активность юзера(если только по галке на "Passive" в опциях Connection и невозможность открыть заданный порт - то вопрос отпадает).

>Вообще на $Lock можно отправлять любой $Key ))
>По крайней мере у меня это прокатывало
Не совсем так. Такое возможно тока в случае если, на примере YnHub'a, не стоит галка на "kick user if key invalid".
Go to the top of the page
+Quote Post
Setuper
сообщение 7.3.2009, 22:25
Сообщение #18


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1703 раза




Исходники будут открыты?
Go to the top of the page
+Quote Post
mariner
сообщение 7.3.2009, 23:00
Сообщение #19


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Цитата
>к тому же автоматически лишаемся кросс-платформенности.
А мне на неё пофик - я кроме виндоуса других операционок не признаю.


Тут ты ошибаешься, Брат. Не признавя другие ОСи ты страдаешь фимозом кругозора. Я, например, сисадмин (ну работаю), а значит тоже по своему программист - пишу системные скрипты и под вин и под никс (в них низя добиться кросплатформенности). Но если писать (а ты пишешь) программу и хочешь (возможно) стать давольно известным - то стоит писать на кросплатформенном языке программирования, ибо тогда (как это сделали создалели qutIM) можно добиться успеха. У меня все.
Go to the top of the page
+Quote Post
Kinjal
сообщение 7.3.2009, 23:01
Сообщение #20


Абсолютный новичок


Группа: Пользователи
Сообщений: 7
Регистрация: 4.3.2009
Пользователь №: 2 467
Спасибо сказали: 0 раз




>Исходники будут открыты?
Кому они будут нужны? Они ж на делфе будут написаны, на недоязыке big_smile.gif

Ну а если по сути - это будет зависеть от популярности клиента. Если клиент будет не популярен - сорцы будут открыты, если популярен - то закрыты, чтобы предотвратить атаку клонов (основная причина по которой я делаю свой клиент - бесит монополия стронга и его "изменено только лого-название"-клонов).

>Не признавя другие ОСи ты страдаешь фимозом кругозора.
А вот тут ты ошибаешься, брат. Я начинаю разработку каждого своего проекта по принципу "меня бесит". Есть стронг и его клоны - меня бесят его клоны. Меня убогость его интерфейса и общее неудобство да и в целом дискомфорт который я получаю пользуясь им. Меня бесит что в нем есть много функций который мне нафик не нужны, и при этом нет нескольких которые мне очень нужны. Меня бесит что клоны на него основе - побольшому счету ничем не отличаются от него самого.
В плане кроссплатформености - аналогично. Меня винда - абсолютно устраивает. Меня она _ничем_ не бесит, в результате чего - я не заглядываюсь на альтернативы, и как следствие - не задаюсь вопросом кроссплатформенности.

>и хочешь (возможно) стать давольно известным
Ну, спорить не буду - для моего самолюбия осозновать себя в какой-то мере знаменитостью, если мой дц клиент будет успешным, будет приятно. Но это не самоцель - т.к. клиент я делаю в первую очередь для себя, чтобы мне было удобно сидеть на хабе локальной сети моего провайдера. А если он понравится другим - тоже будет приятно.
Go to the top of the page
+Quote Post

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Topic has attachmentsЧат клиент для DC++ (только чат)
5 мамин_парень 568 15.10.2017, 15:22 Посл. сообщение: =Alexandr=
No new Topic has attachmentsDDD++ – лёгкий и быстрый DC++ клиент
Преднастроенный клиент с готовыми списками хабов
114 Damaks 55 173 19.5.2016, 10:06 Посл. сообщение: dimetro
No New Posts DC-клиент с картинкой вместо фона
2 Анима 1 638 29.3.2015, 20:54 Посл. сообщение: MIKHAIL
No New Posts Клиент для Mydc
Android
5 Артём 2 585 8.3.2015, 12:24 Посл. сообщение: Saymon21
No New Posts Проблемы с общением хаб--клиент
6 keyviewer 3 669 23.9.2014, 21:30 Посл. сообщение: Saymon21
No new Topic has attachmentsКлиент: LiveDC
Наверное, самый молодой из клиентов
29 Erty Hackward 11 444 4.4.2014, 14:20 Посл. сообщение: Angel_D
No new votes Опрос: Topic has attachmentsМобильный Dc Клиент
JAVA
26 Wariner 16 109 23.11.2013, 16:00 Посл. сообщение: Артём
No New Posts DC-Клиент для iPhone
Существует ли он?
2 X-Sky 3 414 13.10.2013, 17:54 Посл. сообщение: X-Sky
No New Posts От: Клиент: LiveDC
От темы с ID: 5484
0 Артём 1 492 10.9.2013, 10:03 Посл. сообщение: Артём
No New Posts ВАЖНО: Topic has attachmentsКлиент: Apexdc++
8 Setuper 10 489 13.11.2012, 0:54 Посл. сообщение: Alexey
No New Posts Пишу свой клиент
13 Charlz_Klug 5 760 30.9.2012, 10:14 Посл. сообщение: Saymon21
Closed Объединю свой хаб с другими
11 Ameet 4 940 17.5.2012, 9:08 Посл. сообщение: Setuper
No new Topic has attachmentsSmall DC HubList (Хаблист) Создай свой хаблист.
CMS для создания хаблиста.
62 Stribog 34 536 14.10.2011, 17:45 Посл. сообщение: KT315
No New Posts От: DDD++ - первый мультипиринговый dc-клиент
От темы с ID: 4706
2 Damaks 2 775 25.6.2011, 11:53 Посл. сообщение: Damaks
No new Клиент FGlink DC++
Обновление
18 TiGRpp 15 665 30.4.2011, 9:16 Посл. сообщение: OCTAGRAM

 



RSS Сейчас: 21.2.2018, 16:05