Hola de nuevo.
 
Tengo un problemilla con un script php que encontre en la web y que me gusta mucho porque es muy rapido al conectar y leer datos pero que tiene el problema de que se queda parado {sin hacer nada} si no llega a conectar.  
¿Habria alguna posibilidad de ponerle un timeout o que avise si no llega a conectar? 
Agradeceria mucho cualquier aportacion porque mis conocimientos en php son bastante limitados 
Os adjunto el codigo: 
<? 
class Telnet {
        /* (c) 
[email protected] */  
        var $sock = NULL;  
        function telnet($host,$port) {
        $this->sock = fsockopen($host,$port);
                socket_set_timeout($this->sock,2,0);
        }  
    function close() {
        if ($this->sock)
            fclose($this->sock);
        $this->sock = NULL;
        }  
    function write($buffer) {
                $buffer = str_replace(chr(255),chr(255).chr(255),$buffer);
        fwrite($this->sock,$buffer);
        }  
        function getc() {
                return fgetc($this->sock);
        }  
    function read_till($what) {
        $buf = '';
                while (1) {
                        $IAC = chr(255);  
                        $DONT = chr(254);
                        $DO = chr(253);  
                        $WONT = chr(252);
                        $WILL = chr(251);  
                        $theNULL = chr(0);  
                        $c = $this->getc();  
                        if ($c === false)
                          return $buf;  
                        if ($c == $theNULL) {
                                continue;
                        }  
                        if ($c == "\021") {
                                continue;
                        }  
                        if ($c != $IAC) {
                                $buf .= $c;  
                                if ($what ==
(substr($buf,strlen($buf)-strlen($what)))) {
                                        return $buf;
                                } else {
                                        continue;
                                }
                        }  
                        $c = $this->getc();  
                        if ($c == $IAC) {
                                $buf .= $c;
                        } else if (($c == $DO) || ($c == $DONT)) {
                                $opt = $this->getc();
                        // echo "we wont ".ord($opt)."\n";
                                fwrite($this->sock,$IAC.$WONT.$opt);
                        } elseif (($c == $WILL) || ($c == $WONT)) {
                                $opt = $this->getc();
                        // echo "we dont ".ord($opt)."\n";
                                fwrite($this->sock,$IAC.$DONT.$opt);
                        } else {
                        // echo "where are we? c=".ord($c)."\n";
                        }
                }  
        }
}  
$tn = new telnet("192.168.255.100",23);
echo $tn->read_till("ogin: ");
$tn->write("admin\r\n");
echo $tn->read_till("word: ");   
Un saludo y gracias