Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Общалка aka Флуд _ Пишу свой клиент

Автор: Charlz_Klug 16.6.2012, 19:35

Пытаюсь написать свой клиент. Затык происходит в следующем:

Код
CL-USER> (run-alien-dc)
Connected to server 188.134.15.173:411 via local connection at 10.1.17.28:53491!
$Lock EXTENDEDPROTOCOL_verlihub Pk=version1.0.0|<Terminator> Operation timeout: Key|End of file detected.
T
CL-USER>
Строка "$Lock EXTENDEDPROTOCOL_verlihub Pk=version1.0.0" обозначает что не требуется вычисление ключа?

Автор: Alexey 16.6.2012, 23:02

http://mydc.ru/r/?http://wiki.mydc.ru/$Lock

Автор: Charlz_Klug 17.6.2012, 15:36

Цитата(Alexey @ 17.6.2012, 0:02) *
http://mydc.ru/r/?http://wiki.mydc.ru/$Lock

Спасибо, понял.

Автор: Charlz_Klug 15.9.2012, 13:08

Как DC++ клиенты определяют в каком режиме (пассивном или активном) они находятся?

Автор: mariner 15.9.2012, 17:40

По тегу

Автор: Charlz_Klug 15.9.2012, 19:26

Цитата(mariner @ 15.9.2012, 18:40) *
По тегу

Возможно, вы меня не так поняли. Я интересуюсь следующим вопросом: Например, я запустил microdc2 на своём компьютере, он (microdc2) каким-то образом определяет режим с помощью которого он подключён к хабу и уже тогда отправляет $MyINFO на хаб. А остальные клиенты из данных в $MyINFO получают режим подключения конкретного пользователя, то есть меня. Интересует способ определения режима подключения. В коде microdc2 src/hub.c есть следующий текст:
Код
    res = hub_putf("$MyINFO $ALL %s %s<%s,M:%c,H:1/0/0,S:%d>$ $%s%c$%s$%" PRIu64 "$|", /* " */
      conv_nick,
      conv_desc,
      my_tag, is_active ? 'A':'P', my_ul_slots,
      my_speed,
      1, /* level, '1' means normal, see DCTC Documentation/Documentation/VAR */
      conv_email,
      my_share_size);
Очевидно, что режим подключения определяется с помощью функции или переменной is_active, но непонятно где назначается это значение is_active. В src/main.c есть такой код:
Код
bool
set_active(bool newactive, uint16_t port)
{
    if (newactive) {
        disable_active();
        if (!enable_active(port))
            return false;
    } else {
        disable_active();
        listen_port = port;
    }
    /* Start of disable_search. */
    if (search_socket >= 0) {
        if (close(search_socket) < 0)
            warn(_("Cannot close socket - %s\n"), errstr);
        search_socket = -1;
    }
    /* End of disable_search. */
    enable_search();
    is_active = newactive;
    return true;
}
И тут я не могу разобраться где назначается значение для newactive.

Автор: mariner 15.9.2012, 23:25

Это назначается командой

Код
set active 1
которая вводится в конфиге или в консоли. Собственно newactive - это 1 или 0.

Может наконец прочитаешь хотя бы help по microdc?

Автор: Charlz_Klug 16.9.2012, 7:55

Цитата(mariner @ 16.9.2012, 0:25) *
Это назначается командой
Код
set active 1
которая вводится в конфиге или в консоли. Собственно newactive - это 1 или 0.

Спасибо, теперь ясно.
Цитата(mariner @ 16.9.2012, 0:25) *
Может наконец прочитаешь хотя бы help по microdc?

Извините, да, сам оплошал. Не догадался мануал покурить.

Автор: Charlz_Klug 28.9.2012, 8:38

Следующий вопрос про команду "$Hello". Когда приходит команда "$Hello <мой_ник>|" тогда я отправляю "$MyINFO...", а что делать когда приходит команда "$Hello <чужой_ник>|"?

Автор: Setuper 28.9.2012, 9:16

Не отправлять $MyINFO, пока не придёт твой ник.

Автор: Charlz_Klug 28.9.2012, 14:51

Цитата(Setuper @ 28.9.2012, 10:16) *
Не отправлять $MyINFO, пока не придёт твой ник.

А когда придёт "$Hello" с чужим ником - тупо игнорировать?

Автор: Setuper 28.9.2012, 17:51

На стадии входа - да

Автор: Charlz_Klug 29.9.2012, 18:55

Цитата(Setuper @ 28.9.2012, 18:51) *
На стадии входа - да

А далее, в процессе штатной работы?

Автор: Saymon21 30.9.2012, 10:14

А если логикой подумать? ;)