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常见问题。

基本方案

  • 连接到服务器...
  • 连接的!
  • 服务器正在等待NICK / USER信息...
  • 服务器收到NICK / USER信息,正在等待字母数字PING回复...
  • 服务器收到字母数字PING回复,发送MOTD。
  • MOTD结束,发送JOIN加入频道...
  • 已加入频道,请求了频道的NAMES列表。
  • NAMES列表结束。
  • 接收活动频道/服务器数据。
  • 如果发送QUIT命令,服务器将忽略通常的QUIT,并且将通过服务器默认状态发送“关闭链接”作为状态退出(生命太短...)。
  • 服务器正在进行活动检查,收到主机PING(irc.ams.nl.euirc.net),服务器正在等待回复...
  • 向服务器发送回复。
  • (QUIT:User Message)或(QUIT:))如果发送了QUIT命令,服务器将按照用户级的方式处理QUIT命令,通常的方式是按用户指定的消息发送“Closing Link”

  • 让我们回顾一下你的代码:

  • 当我做了我的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