我在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 ,它也会对你有很大的帮助。
以上就是c/c++开发分享IRC Bot:错误 – 注册超时相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562319.html