6

私は C で単純な IRC ボットを作成しています。そして、ついにボットが接続して情報を受け取るようになりました。私のコードも送信するはずですが、サーバーは何も送信していないかのように動作しています。ボットが接続すると、次のメッセージが表示されます。

Recieved: :roc.esper.net NOTICE AUTH :*** ホスト名を検索しています...

Recieved: :roc.esper.net NOTICE AUTH :*** あなたのホスト名が見つかりました

その時点で、私のコードはこれを送信します:

送信者: NICK Goo

送信: USER Goo * * :Goo

Wireshark を使用して、これが最初の接続後に送信する必要がある登録であると判断しました。ただし、データが実際に送信されているかどうかはわかりませんが、何らかの理由で無効になっている可能性がありますか? 約30秒後に何もないので、これも受け取ります:

Recieved: ERROR : Closing Link: c-68-33-143-182.hsd1.md.comcast.net (登録タイムアウト)

そして、私のプログラムは閉じます。

irc のプログラムによる認証/登録プロセスについて何か知っている人はいますか? または、他の誰かに役立つアイデアはありますか?

ありがとう

**編集**修正。各行の終わりに行末記号を送信する必要がありました。\r\n

4

3 に答える 3

4

roc.esper.net の Telnet:

~$ 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 秒後)。

于 2008-11-27T08:49:20.733 に答える
2

NICK コマンドの前に USER コマンドを送信してみてください。どの 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
"

私のために働きます。私はいつもFreenode、Undernet、Dalnetにtelnetしています...

于 2008-11-27T08:29:05.967 に答える
1

私が見たチュートリアルから(このように)、これを除いて、あなたはそれを正しくやっているようです

USER Goo * * :Goo

USER Goo 0 * :Goo

私が見たすべてのチュートリアルで。また、後で PING-PONG を忘れないでください。ただし、これは登録には必要ありません (編集: これは間違っているようで、NICK を送信した直後に PONG が必要になるようです)。

RFC 1459について知っていると思いますが、これも大いに役立ちます。

于 2008-11-27T08:17:15.570 に答える