PHP fgets返回空字符串

时间:2015-09-02 20:22:19

标签: php

我想与服务器建立telnet连接并向其发送命令。我成功建立了连接并发送了命令,但是当我想用fgets读取结果时,它会返回空字符串。

$socket=fsockopen($host, 25, $errno, $errstr);
if ($socket!==false){
    fputs($socket, "helo hi\r\n");
    fputs($socket, "quit\r\n");
}
fclose($socket);
$buffer=array();
while (!feof($socket)){
    $buffer[]=fgets($socket);
}

此代码返回带有fgets的空字符串,并且不会在流输出中隐藏文件指针。有什么问题?

1 个答案:

答案 0 :(得分:3)

在尝试读取套接字返回的内容之前关闭连接。

想象一下:在明确告知你这样做之前,你不记得任何事情 做以下大脑游戏:打开一个文件。现在写一些东西。然后关闭它。现在告诉我所述文件的内容。你也会告诉我你不知道,因为你没有读到它里面的东西。你在阅读它之前关闭了它,因此不知道它里面写了什么。

我们从中学到了什么?我们需要在>之前阅读插座。

$socket = fsockopen($host, 25, $errno, $errstr);
if($socket !== false) {
    fputs($socket, "helo hi\r\n");
    fputs($socket, "quit\r\n");
}

$buffer = array();
while(!feof($socket)) {
    $buffer[] = fgets($socket);
}
fclose($socket);