no servidor local funciona qe é uma beleza, mas no servidor a telnet não connecta e o php retorna erro. acho que a porta não está sendo aberta...
to usando o seguinte no servidor:
#!/usr/bin/php -q <?php class Socket{ var $Endereco; var $Porta; var $SockMaster; function Socket($Endereco = 'localhost', $Porta = 8888){ error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); $this->Endereco = $Endereco; $this->Porta = $Porta; if (($master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { echo "ERRO socket_create() : " . socket_strerror($master) . "\n"; } socket_set_option($master, SOL_SOCKET,SO_REUSEADDR, 1); if (($ret = socket_bind($master, $Endereco, $Porta)) < 0) { echo "ERRO socket_bind() : " . socket_strerror($ret) . "\n"; } if (($ret = socket_listen($master, 5)) < 0) { echo "ERRO socket_listen() : " . socket_strerror($ret) . "\n"; } $this->SockMaster = $master; } function HandleClient($allclient, $socket, $buf, $bytes) { foreach($allclient as $client) { socket_write($client, $socket.": ".$buf); } } function HandleServer($allclient, $socket, $buf, $bytes){ foreach($allclient as $client) { echo ($socket.": ".$buf."<br>"); } } function Ativa(){ $master = $this->SockMaster; $read_sockets = array($master); while (true) { $changed_sockets = $read_sockets; $num_changed_sockets = socket_select($changed_sockets, $write = NULL, $except = NULL, NULL); foreach($changed_sockets as $socket) { if ($socket == $master) { if (($client = socket_accept($master)) < 0) { echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n"; continue; } else{ array_push($read_sockets, $client); } } else{ $bytes = socket_recv($socket, $buffer, 2048, 0); if ($bytes == 0) { $index = array_search($socket, $read_sockets); unset($read_sockets[$index]); socket_close($socket); } else{ $allclients = $read_sockets; array_shift($allclients); // remove master $this->HandleClient($allclients, $socket, $buffer, $bytes); $this->HandleServer($allclients, $socket, $buffer, $bytes); }// else }// else }// foreach }// while }// function }// class $Socket = new Socket("localhost",150); $Socket->Ativa(); ?>