我以为TCP按顺序发送了数据包?

时间:2013-06-11 08:16:31

标签: php c++ python tcp irc

我在IRC机器人中发送以下内容:

bot->message("chanserv", "op #channel");
bot->raw("KICK #channel " + this->nick(args[0]) + " :RIPIP");
sleep(2000);  // even tried sleepin
bot->message("chanserv", "deop #channel");

我看到它是通过套接字发送的

PRIVMSG chanserv :op #channel
KICK #channel baduser :RIPIP
PRIVMSG chanserv :deop #channel
:hobana.freenode.net 482 username #channel :You're not a channel operator

然后它会回吐一个数据包,说你不是运营商,然后 op / de-op响应数据包。

1 个答案:

答案 0 :(得分:2)

这与TCP没有任何关系 - 它与IRC的架构有关。 ChanServ服务通常不是您要连接的客户端ircd的一部分。它由一个单独的ircd实现,该ircd链接到客户端ircd(s)。

这意味着您的KICK(来自您的客户端)可以在您(来自服务守护程序)的模式更改消息到达之前到达您的客户端服务器。

要正确执行此操作,您需要向op发出ChanServ命令,然后等到MODE命令在发出KICK之前给出操作deop命令。