2011-05-26 105 views
1

如何从使用PHP的telnet会话断开连接?使用下面的代码我读取了telnet输出。但是如果数据无法在$输出变量中接收,我想断开与telnet会话的连接在3秒内。我如何做到这一点。请看我的代码如下:如何使用PHP超时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;    
} 

回答

2

你在Linux或Windows下运行?在Linux中,您可以分叉应用程序以并行运行telnet会话,如果没有收到输出,主线程会在给定时间后终止会话。

在Windows中,您可能会做一个循环,在套接字上执行fread(),并跟踪所花费的时间,而无需获取任何数据并在给定时间后关闭套接字。

编辑: 我只记得,你不必跟踪此手动:) 你也许可以做到像使用Windows

// 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!"; 
} 
... 
+0

thanks..im system.Couldü请指南我如何创建循环,并设置时间差异??请指导和帮助.. – riad 2011-05-26 07:22:34

+0

谢谢它的工作.... – riad 2011-05-26 08:13:19