1

PHP を使用して telnet セッションから切断する方法は?以下のコードを使用して、telnet 出力を読み取ります。しかし、$output 変数で 3 秒以内にデータを受信できない場合は、telnet セッションから切断したいと考えています。以下のコードを参照してください。

$fp = fsockopen("localhost", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    $output=fread($fp,128);//Here we read the output value from socket        
    fclose($fp);                
    echo $output;               
}
4

1 に答える 1

2

Linux または Windows で実行していますか? Linux では、アプリケーションを fork して telnet セッションを並行して実行し、一定時間後に出力が受信されない場合にメイン スレッドがセッションを終了するようにすることができます。

Windows では、おそらくソケットでループを実行し、fread()データを取得せずに経過した時間を追跡し、一定時間後にソケットを閉じることができます。

編集:これを手動で追跡する必要がないことを思い出しました:)おそらく次のようなことができます

// Set socket timeout to 10 seconds
socket_set_timeout($fp, 10)

...

 $output=fread($fp,128);//Here we read the output value from socket  
if($output == false) {
  // Code to run if timeout occured
  echo "We timed out!";
}
...
于 2011-05-26T07:05:30.447 に答える