1

如何使用 PHP 断开 telnet 会话?使用下面的代码我读取 telnet 输出。但如果数据在 3 秒内无法在 $output 变量中接收,我想断开 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 中,您可以分叉应用程序以并行运行 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 回答