PHP:socket_read只返回响应的一部分(telnet)

时间:2013-09-05 17:32:49

标签: php sockets telnet

我的路由器有一个API,您可以通过Telnet连接,其中包括控制Tellstick。 我正在使用PHP连接到路由器。 我可以执行命令,但是当我尝试使用socket_read读取响应时,我只能获得它的一部分。

这是使用Windows的telnet功能连接到路由器时的样子: http://i.imgur.com/hnIrVQa.png。 对命令ts aliases的响应是几行。

当我尝试通过我的PHP脚本获得响应时,我只得到第一行ALIAS=´Hallway´

我正在使用的代码听起来像这样:

function reply($insocket) {

    if (false !== ($bytes = socket_read($insocket, 2048, PHP_BINARY_READ))) {
        return "&nbsp;&nbsp;&nbsp;Reply: <code>$bytes</code> \n<br>";
    } else {
        return "socket_read() failed; reason: " . socket_strerror(socket_last_error($insocket)) . "\n";
    }

    /*
    while ($out = socket_read($insocket, 2048)) {
        return $out;
    }
    */
}

所有代码:http://codepad.org/jykGgivv

1 个答案:

答案 0 :(得分:0)

也许它超时,在你的剧本顶部尝试这样的事情:

ini_set('default_socket_timeout',300);