IRC Bot: ошибка - время ожидания регистрации - PullRequest
5 голосов
/ 27 ноября 2008

Я делаю простой бот IRC на C. И, наконец, я подключил бот и получил информацию. Мой код также должен отправлять, но сервер работает так, как будто он ничего не отправляет. Когда бот подключается, я получаю это:

Получено:: roc.esper.net УВЕДОМЛЕНИЕ АВТО : *** Поиск вашего имени хоста ...

Получено:: roc.esper.net УВЕДОМЛЕНИЕ АВТО : *** Найден ваш хост

В этот момент мой код отправляет:

Отправлено: Nick Goo

Отправлено: USER Goo * *: Goo

Я определил с помощью wireshark, что это регистрация, которую вы должны отправить после первоначального подключения. Однако я не уверен, что данные на самом деле отправляются или, может быть, они как-то недействительны? Потому что примерно через 30 секунд я тоже получаю это:

Получено: ОШИБКА: Закрывающая ссылка: c-68-33-143-182.hsd1.md.comcast.net (Время регистрации истекло)

И тогда моя программа закрывается.

Кто-нибудь еще знает что-нибудь о программных процессах аутентификации / регистрации в irc? Или у кого-нибудь еще есть полезные идеи?

Спасибо

** РЕДАКТИРОВАТЬ ** Исправлено. Мне нужно было отправлять терминаторы строки в конце каждой строки. \ Г \ п

Ответы [ 3 ]

3 голосов
/ 27 ноября 2008

Telnet для roc.esper.net:

~$ telnet roc.esper.net 6667
Trying 198.247.173.216...
Connected to roc.esper.net.
Escape character is '^]'.
:roc.esper.net NOTICE AUTH :*** Looking up your hostname...
:roc.esper.net NOTICE AUTH :*** Found your hostname
NICK Goo
USER Goo * * :Goo
PING :268966433
PONG :268966433

NICK, USER и PONG были отправлены мной. После этого следует приветственное сообщение:

:roc.esper.net 001 Goo :Welcome to the EsperNet Internet Relay Chat Network Goo
:roc.esper.net 002 Goo :Your host is roc.esper.net[198.247.173.216/6667], running version esphyb-1.0.1

И так далее ...

Итак, еще раз проверьте PING-PONG и правильно ли отправлены ваши сообщения (особенно CR / LF или '\ n' в конце).

Кстати, я получаю «время ожидания регистрации», если я не отправляю ни одно из сообщений, даже если PONG отсутствует, но как только я ответил на PING, время ожидания больше не наступает (по крайней мере, через 30 секунд) .

2 голосов
/ 27 ноября 2008

Попробуйте отправить команду USER перед командой NICK. К какой сети IRC вы пытаетесь подключиться?

"
> telnet irc.freenode.net 6667
NOTICE AUTH :*** Looking up your hostname...
NOTICE AUTH :*** Checking ident
NOTICE AUTH :*** No identd (auth) response
NOTICE AUTH :*** Couldn't look up your hostname
USER x x x x
NICK hwjrh
:kubrick.freenode.net 001 hwjrh :Welcome to the freenode IRC Network hwjrh
:kubrick.freenode.net 002 hwjrh :Your host is kubrick.freenode.net[kubrick.freenode.net/6667], running version hyperion-1.0.2b
"

У меня работает; Я постоянно общаюсь с Фриноде, Ундернетом и Далнетом

1 голос
/ 27 ноября 2008

Из учебников, на которые я смотрел (например, , этот ), кажется, что вы делаете все правильно, за исключением того, что этот

USER Goo * * :Goo

есть

USER Goo 0 * :Goo

во всех уроках, которые я видел. Кроме того, не забывайте PING-PONG позже, но это не нужно для регистрации (РЕДАКТИРОВАТЬ: кажется, что это неправильно, и PONG необходим сразу после отправки NICK).

Полагаю, вы знаете о RFC 1459 , который также очень вам поможет в этом.

...