Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:socket\u read仅返回部分响应(telnet)_Php_Sockets_Telnet - Fatal编程技术网

PHP:socket\u read仅返回部分响应(telnet)

PHP:socket\u read仅返回部分响应(telnet),php,sockets,telnet,Php,Sockets,Telnet,我的路由器有一个API,你可以通过Telnet进行连接,还可以控制一个信号杆。 我正在使用PHP连接到路由器。 我可以执行命令,但当我试图使用socket\u read读取响应时,我只得到了部分响应 这是使用Windows的telnet功能连接到路由器时的外观: . 对命令ts alias的响应有几行长 当我试图通过PHP脚本获得响应时,我只得到第一行,ALIAS=''Hallway' 我用来听的代码如下所示: function reply($insocket) { if (false

我的路由器有一个API,你可以通过Telnet进行连接,还可以控制一个信号杆。 我正在使用PHP连接到路由器。 我可以执行命令,但当我试图使用
socket\u read
读取响应时,我只得到了部分响应

这是使用Windows的telnet功能连接到路由器时的外观: . 对命令
ts alias
的响应有几行长

当我试图通过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;
    }
    */
}

所有代码:

可能超时了,请在脚本顶部尝试以下内容:


ini设置(“默认套接字超时”,300)

听起来您希望在一个socket_read()调用中获得整个消息。使用TCP/IP,流量可能会以不可预测的方式中断,您可能需要执行几个socket_read()调用来获取整个消息。