2011-09-16 66 views
0

我有問題11300在端口上本地主機(127.0.0.1)通過PHP使用telnet 11300

我以前沒有使用這種通過PHP在本地主機(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萬事OK,所以後來我可以爲了得到結果鍵入命令「統計」。我正在使用Ubuntu。

錯誤在哪裏? 如何在命令行中得到類似結果的結果?

+0

也許你需要發送'\ N'或類似實際上告訴你已經取得了一些輸入,另一端的東西嗎? – hakre

+0

我改正爲: echo sendToSocket('127.0.0.1',11300,「stats \ r \ n」); 它的工作,一切都很好,非常感謝。 – Alex

+0

請在下面添加它作爲答案。然後你可以選擇它作爲解決這個問題的答案。謝謝! – hakre

回答

0

該腳本只從響應中讀取一行。

$response .= fgets($fp); 

已到的東西被替換像

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

我刪除了while循環,因爲問題是一樣的。 – Alex

0

我糾正代碼:

回聲sendToSocket( '127.0.0.1',11300, 「統計\ r \ n」);

它的工作,一切都OK。

注意:如果您發送單引號作爲輸出的代碼不起作用。

相關問題