использование telnet через PHP на локальном хосте (127.0.0.1) через порт 11300 - PullRequest
0 голосов
/ 16 сентября 2011

У меня проблема с использованием telnet через PHP на локальном хосте (127.0.0.1) через порт 11300

Раньше я этим не пользовался, поэтому справка будет отличной.код:

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.

Где ошибка?Как получить результат как результат в командной строке?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2011

Я исправил код до:

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

и все работает, все ок.

Примечание: код не работает, если вы отправляете одинарную кавычку в качестве вывода.

0 голосов
/ 16 сентября 2011

Этот скрипт читает только одну строку из ответа.

$response .= fgets($fp);

должен быть заменен чем-то вроде

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