IRC“QUIT”无法正常工作
更改:我确定这个问题与编码无关。 然而问题仍然存在,因为这似乎是IRC造成的,我仍然在寻找原因。
我正在连接的服务器使用两种PING请求:
连接到服务器时会询问其中一个,它的格式为8个字符的字母数字值。
例如: PING :EA0E9275.
另一个是服务器发出MOTD后,加入频道,完成“End of / NAMES list”。 然后,“n延迟”服务器向我发送一个当前连接主机的ping请求,因为它的值。
例如: PING :irc.ams.nl.euirc.net
如果我在回复主机PING请求之前发送命令“退出:退出消息”,则服务器将忽略退出消息,而是退出服务器填充状态消息,类似于“客户端已退出”消息。
示例: ERROR :Closing Link: Nick[IP.ADD.RE.SS] (Life is too short...)
但是,如果我在响应主机PING请求后发送相同的命令,我的QUIT将按照它应该进行处理。
示例: ERROR :Closing Link: Nick[IP.ADD.RE.SS] (Quit: Quit Message)
我已经检查了RFC,并在QUIT部分找到了它:
如果出于某种其他原因客户端连接在没有客户端发出QUIT命令的情况下关闭(例如,客户端死亡并且在套接字上发生EOF),则服务器需要填写退出消息,其中反映了消息的性质导致它发生的事件。
此外,如果仍然需要查看我用来完成此操作的部分代码,则可以在此处查看。 但是,这是IRC客户端的mIRC常见问题。
基本方案
让我们回顾一下你的代码:
当我做了我的IRC机器人,我explode()
编从服务器串入字(通过空间拆分),然后你可以参考的话:
if ($words[0] == "PING") { reply("PONG :" . $words[1]); }
在PING
之后立即PONG
,并回复与服务器相同的消息。
如果第二个是满足的,你不应该有服务器等待PING的问题,因为你会立即回答。 客户端应该遵守服务器上的PING PONG命令,否则服务器会认为它是脱机的(是的,即使你发送其他东西,服务器也期望PONG)。
链接地址: http://www.djcxy.com/p/53459.html上一篇: IRC "QUIT" not working properly
下一篇: No reply on JOIN