Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
ai galera sei que tem como fazer um servidor tcp com php agora eu queria saber se tem como rodar uma pagina de chat com php sem que a conexao seja quebrada como no http tenho dois script que troca informaçoes depois sai mais nao acho um geito de fazer uma conexao persistente, entre cliente e servidor.
cliente
#!/usr/bin/php -q
<?php
error_reporting(E_ALL);
echo "Conexao TCP/IP em PHP\n";$socket_servidor = socket_create(AF_INET,SOCK_STREAM,0);
if ($socket_servidor < 0)print "Nao foi possivel obter socket para conexao com $host\n";
exit;
}$bind = socket_bind($socket_servidor,$host,$porta);
if ($bind < 0)print "Nao foi possivel fazer BIND no $host:$porta\n";
exit;
}
$listen = socket_listen($socket_servidor,5);
if ($listen < 0)print "Nao foi possivel fazer LISTEN no $host:$porta\n";
exit;
}
$conexao = 0;
print "Aguardando conexoes na porta $porta\n";$socket_cliente = socket_accept($socket_servidor);
if ($socket_cliente < 0)print "Nao foi possivel aceitar conexao com cliente remoto\n";
break;
}
$conexao++;
print "Conexao numero $conexao\n";
$funcao = socket_read($socket_cliente,8);
if ($funcao)print "Funcao: $funcao\n";
if ($funcao == 'LER')$msgler = "Funcao Ler";
socket_write($socket_cliente,$msgler,strlen($msgler));
}
else if ($funcao == 'ESCREVER')$msg = socket_read($socket_cliente,100);
if ($msg)print "Mensagem recebida: $msg\n";
}
}print "Funcao nao implementada $funcao\n";
}
socket_close($socket_cliente);
}
}
socket_close($socket_servidor);
print "Servidor saindo...\n";
?>
e o cliente
#!/usr/bin/php -q
<?php
/ Cliente /
error_reporting(E_ALL);
echo "Conexao TCP/IP em PHP\n";$funcao = array("LER","ESCREVER");
for ($n = 0; $n < 2; $n++)$socket_cliente = socket_create(AF_INET,SOCK_STREAM,0);
print "$socket_cliente\n";
if ($socket_cliente < 0)print "Nao foi possivel obter socket para conexao com $host\n";
exit;
}$connect = socket_connect($socket_cliente,$host,$porta);
if ($connect < 0)print "Nao foi possivel conectar no $host:$porta\n";
exit;
}
print "Conexao $n $host:$porta Funcao : $funcao[$n]\n";
socket_write($socket_cliente,$funcao[$n],strlen($funcao[$n]));$msg = socket_read($socket_cliente,100);
if ($msg)print "Mensagem recebida: $msg\n";
}
break;$msg = "Minha mensagem";
socket_write($socket_cliente,$msg,strlen($msg));
print "Mensagem enviada\n";
break;
}
socket_close($socket_cliente);
print "Conexao fechada\n";
}
print "Cliente finalizou normal";
?>
é rodado pela linha de comando. queria saber se isso é possivel.
no javascript usa-se a funçao send para enviar uma mensagem via socket agora com php eu nao sei.
Carregando comentários...