【问题标题】:PHP IRC BOT wont connectPHP IRC BOT 无法连接
【发布时间】:2012-10-04 13:07:14
【问题描述】:

2 年前它起作用了,现在却出现了一些令人讨厌的错误,我找不到它为什么不起作用的答案:

$this->BotSocket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
    if (!$this->BotSocket) {
        die('Socket error1 : '.socket_strerror(socket_last_error()));
    }
    /**
     * Bind the socket to make it irc'able 
     */

    if(!socket_bind($this->BotSocket, $this->BotConfig['hostname'])) { 
        die('Socket error2 : '.socket_strerror(socket_last_error()));
    }


    if(!socket_connect($this->BotSocket, $this->BotConfig['server'], $this->BotConfig['port'])) { 
        die('Socket error3 : '.socket_strerror(socket_last_error()));
    }

和连接字符串:

        $this->BotConfig = array(

        /**
         * Bot configuration for information
         */

        'nickname' => 'Muts',
        'realname' => 'Vii personal funbot',
        'ident'    => 'Muts',

        /**
         * Bot server configration
         */

        'hostname' => 0,
        'server'   => 'OGN2.OnlineGamesNet.net',
        'port'     => 6667,

(数组中有更多,它是正确关闭的) 以及我得到的错误:

警告:socket_connect() [function.socket-connect]:无法连接 [110]:第 225 行 /home/patrick/domains/xxxx/public_html/muts/bot.php 中的连接超时 套接字错误3:连接超时

有人可以帮我解决这个问题吗?

另外值得注意的是: - 使用与 telnet 相同的连接设置 - 使用与 mIRC 相同的连接设置 - 它正在运行一个网络服务器(外部而不是本地计算机)

host:OGN2.OnlineGamesNet.net 的结果是 ogn2.ogamenet.net 的别名。 ogn2.ogamenet.net 地址为 79.110.87.154 - traceroute:traceroute 到 79.110.87.154 (79.110.87.154),最大 30 跳,40 字节数据包

【问题讨论】:

  • 连接超时=您无法访问服务器,或者它忽略了您。例如您已被防火墙关闭。
  • 您是否针对本地 IRC 服务器对此进行了测试,以确保它实际上是您的代码,而不是您的程序外部的东西?
  • 服务器处于活动状态并且端口正在工作,因为当我使用相同的设置连接 mirc 时,它适用于 telnet,因此没有问题

标签: php sockets connect bots irc


【解决方案1】:

该错误指向外部的东西,而不是您的代码 - 特别是如果它之前有效。

检查您的防火墙设置和套接字端口,以及您要连接的服务器是否处于活动状态。

【讨论】:

  • 服务器处于活动状态并且端口正在工作,因为当我使用相同的设置连接 mirc 时,它适用于 telnet,因此没有问题
【解决方案2】:

将此代码添加到 PHP 文件的顶部以获得更详细的错误消息:

error_reporting(E_ALL);
ini_set("display_errors", 1);

如果你有 SSH 访问权限,试试这些:

DNS 问题?

host OGN2.OnlineGamesNet.net

路由问题?

traceroute 79.110.87.154

尝试一次完整的 TCP 握手

telnet OGN2.OnlineGamesNet.net 6667

【讨论】:

  • 额外的 error_reporting 没有其他任何显示,而且我没有 ssh 访问权限,所以我无法测试..
  • 甚至没有来自 php 脚本的 system("host OGN2.OnlineGamesNet.net") 等?
  • 主机的结果:OGN2.OnlineGamesNet.net 是 ogn2.ogamenet.net 的别名。 ogn2.ogamenet.net 地址为 79.110.87.154 - traceroute:traceroute 到 79.110.87.154 (79.110.87.154),最大 30 跳,40 字节数据包
  • 好的,试试 telnet system("(sleep 2 ; echo QUIT) | telnet OGN2.OnlineGamesNet.net 6667")
  • "正在尝试 79.110.87.154..." 但没有任何反应...进一步
猜你喜欢
  • 2014-10-16
  • 2015-03-10
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2016-08-11
  • 2011-05-12
相关资源
最近更新 更多