通过 PHP 在 localhost(127.0.0.1) 上通过端口 11300 使用 telnet

发布于 2024-12-05 03:33:49 字数 771 浏览 1 评论 0原文

我在端口 11300 上通过 PHP 在 localhost(127.0.0.1) 上使用 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。

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

I have problem to use telnet via PHP on localhost(127.0.0.1) over port 11300

I haven't been using this before, so help would be great.

Here is the code:

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');

I got the "ERROR", thats means that fgets($fp); doesn't work for me.

When typing in Command Line: telnet 127.0.0.1 11300 everything is OK, so then I can type command "stats" in order to get the result. I am using Ubuntu.

Where is the mistake?
How to get result like result in Command Line ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

护你周全 2024-12-12 03:33:50

该脚本仅读取响应中的一行。

$response .= fgets($fp);

必须用类似的东西替换

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

This script reads only one line from the response.

$response .= fgets($fp);

have to be replaced with something like

 while (!feof($fp)) {
  $response .= fgets($fp);
}
羅雙樹 2024-12-12 03:33:50

我将代码更正为:

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

它正在工作,一切都很好。

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

I corrected code to:

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

and it's working, everything is OK.

Note: the code doesn't work if you send single quote as output.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文