IRC Bot:错误 – 注册超时

我在C中制作一个简单的IRC Bot。我终于让机器人连接并接收信息。 我的代码也应该发送,但服务器的行为就好像它没有发送任何东西。 当机器人连接时,我会收到:

收到:: roc.esper.net注意事项:***查找你的主机名……

收到:: roc.esper.net注意事项:***找到您的主机名

我的代码发送到这一点:

发送:NICK Goo

发送:USER Goo * *:Goo

我决定使用wireshark这是你应该在初始连接后发送的注册。 但是,我不确定数据是否实际发送或者它可能无效? 因为在没有任何东西约30秒之后我也会收到这个:

收到:错误:结账链接:c-68-33-143-182.hsd1.md.comcast.net(注册超时)

然后我的程序关闭了。

有没有其他人对irc中的程序设计/注册过程有所了解? 或者其他任何人都有任何有用的想法吗?

谢谢

**编辑**修正。 我需要在每行的末尾发送行终止符。 \ r \ n

telnet for 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秒后没有超时)。

尝试在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 xxxx 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 " 

适合我; 我一直telnet到Freenode,Undernet和Dalnet ……

从我看过的教程(就像这个 ),似乎你做得对,除了这个

 USER Goo * * :Goo 

 USER Goo 0 * :Goo 

在我看到的所有教程中。 此外,不要忘记PING-PONG,但注册时不需要这样(编辑:这似乎是错误的,并且在您发送NICK之后需要PONG)。

我猜你知道RFC 1459 ,它也会对你有很大的帮助。