【问题标题】:using telnet via PHP on localhost(127.0.0.1) over port 11300通过 PHP 在 localhost(127.0.0.1) 上通过端口 11300 使用 telnet
【发布时间】:2011-11-18 18:51:58
【问题描述】:

我在 localhost(127.0.0.1) 上通过端口 11300 通过 PHP 使用 telnet 时遇到问题

我以前没有用过这个,所以帮助会很大。

代码如下:

function sendToSocket($host, $port, $out){
    if(!function_exists('fsockopen'))
        return 'f() doesnt exist !';
    $response = "";
    $fp  = fsockopen($host, $port, $errno, $errstr);
    if(!$fp){
        $response .= "$errstr ($errno)<br/>";
    }else{
        fwrite($fp, $out);
        $response .= fgets($fp);
        fclose($fp);
    }

    if($response)
        return $response;
    else
        return "ERROR";
}
echo sendToSocket('127.0.0.1', 11300, 'stats');

我得到了“错误”,这意味着 fgets($fp);对我不起作用。

当输入命令行时:telnet 127.0.0.1 11300 一切正常,所以我可以输入命令“stats”以获得结果。我正在使用 Ubuntu。

错在哪里? 如何在命令行中得到类似结果的结果?

【问题讨论】:

  • 也许你需要发送\n 或类似的东西来告诉对方你已经做了一些输入?
  • 我更正为:echo sendToSocket('127.0.0.1', 11300, "stats\r\n");它正在工作,一切正常,非常感谢。
  • 请将其添加为下面的答案。然后,您可以选择它作为答案,将这个问题标记为已解决。谢谢!

标签: php localhost telnet


【解决方案1】:

此脚本仅从响应中读取一行。

$response .= fgets($fp);

必须用类似的东西替换

 while (!feof($fp)) {
  $response .= fgets($fp);
}

【讨论】:

  • 我删除了那个while循环,因为问题是一样的。
【解决方案2】:

我将代码更正为:

echo sendToSocket('127.0.0.1', 11300, "stats\r\n");

它正在工作,一切正常。

注意:如果您发送单引号作为输出,代码将不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2018-01-06
    • 2012-08-11
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多