PHP IRC bot连接?

时间:2012-03-03 17:38:16

标签: php irc

我需要一些我正在创建的IRC机器人的帮助(非常简单)。

<?php

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$yonk = socket_connect($sock, "127.0.0.1", 6667);

$wut = socket_read($sock, 1024);
socket_write($sock, "NICK FikesPHPThingy\r\n");
socket_write($sock, "USER fikeh fikeh fikeh :Fike's PHP thang.\r\n");
socket_write($sock, "JOIN #LightSpike\r\n");

echo $wut;

while (True) {

}
?>

连接并读取

:de.blank.net NOTICE Auth :*** Looking up your hostname...
:de.blank.net NOTICE 00AAAAAZ4 :*** Skipping host resolution (disabled by server administrator)

但之后它没有做任何事情。我正在创建这个没有任何教程,只是我自己。但我似乎无法让它发挥作用。有什么想法吗?

PS:抱歉奇怪的变量名称。

1 个答案:

答案 0 :(得分:3)

你必须将(阻塞)读取放在无限循环中,如下所示:

while (True) {
$wut = socket_read($sock, 1024, PHP_NORMAL_READ); // $wut will now be a single line sent by the server
echo $wut; // Do anything with the line
}

这样,您的客户端将继续等待并处理响应消息,直到套接字失去连接或您手动中断循环。我添加了PHP_NORMAL_READ参数,因此客户端一次只能读取一行,这对于处理来说可能更实用。

在相关说明中,您不应该立即加入频道,而是等待001响应代码。这可确保服务器已接受您的标识并准备接收命令。你现在的方式是,JOIN可能(也可能会)被服务器拒绝。