Fonte: Gleisson Assis
É através de sockets que podemos estabelecer comunicações com servidores enviando e recebendo dados, e como de costume, precisamos enviar informações as quais o protocolo usado possa entender e efetuar suas ações. Nesta parte não entraremos muito a fundo. Mas ótimos tutorias podem ser encontrados em www.faqs.org.
Vamos elaborar um script que nos retorne o conteúdo de uma página (usando o protocolo HTTP) e o cabeçalho que o servidor nos envia.
Para começarmos precisamos criar um identificador com o qual faremos trabalhar as demais funções relacionadas, seria algo como iniciar uma conexão com um banco de dados qualquer ou iniciar algum trabalho com arquivos, criamos esse identificador com a função fsockopen. Exemplo:
<?
$sock = fsockopen("localhost",80,$errorno,$error,30);
?>
Bom você deve ter percebido mas é bom comentar que na função fsockopen recebeu cinco parâmetros, sendo que apenas o dois primeiros seriam necessários, estudemo-los então:
<?
$sock = fsockopen("localhost",8000,$errorno,$error,30);
if(!$sock){
echo "Houve um erro: $error ($errorno)";
}
?>
Se você já sabe usar as funções relacionadas
a arquivos ficará feliz em saber que os passos que seguirão
serão efetuados da mesma maneira.
O envio de dados é realizado com funções de escrita
em arquivos e a leitura da resposta do servidor é realizada
com as funções de leitura. Nesse ponto do tutorial é
bom você saber como fazer um requisição simples sob
o protocolo HTTP. Como foi relatado no início do tutorial,
essa parte não será estuda com detalhes, apenas superficialmente:
<?
$requisicao =
"GET /arquivo.txt HTTP/1.0
";
?>
Onde /arquivo.txt
é o arquivo que você deseja do servidor, podendo ser
apenas / o que resultará na página incial do site.
Após a elaboração da string de requisição devemos envia-la
ao servidor. Podemos fazê-lo com as funções fwrite
ou fputs. Usemos
a função fwrite que me
é comum:
<?
fwrite($sock,$requisicao);
?>
Após enviar a requisição do arquivo o servidor enviará uma respota, que pode ser o arquivo requerido ou alguma mensagem de erro, podemos lê-la com algum função de leitura de arquivo, usemos a função fgets:
<?
$resultado = fgets($sock,255);
while(!feof($sock)){
$resultado .= fgets($sock,255);
}
?>
Se você mandasse imprimir a variável resultado veria algumas informação que não fazem parte do corpo do documento, esse é um outro ponto que devemos destacar, o servidor lhe enviára um cabeçalho (informação como cookies, data de expiração e etc...) e após um sequencia de strings que em PHP representaríamos como rnrn o corpo da página, então nesse casa para separarmos esses dados podemos fazer uso da função split - que tem como objetivo retornar um array separando uma string por um delimitador informado - exemplo:
<?
$partes = split("
",$resultado,2);
$header = $partes[0];
$body = $partes[1];
?>
Agora que já realizamos o que queríamos podemos (e devemos) liberar o identificador criado com a função fsockopen, procederemos da mesma maneira ao fecharmos um arquivo:
<?
fclose($sock);
?>
O script completo pode ser escrito com as seguintes
linhas de código:
<?
$sock = fsockopen("localhost",80,$errorno,$error,30);
$requisicao = "GET / HTTP/1.0
";
fwrite($sock,$requisicao);
$resultado = fgets(
$sock,255);
while(!feof($sock)){
$resultado .= fgets($sock,255);
}
$partes = split("
",$resultado,2);
$header =
$partes[0];
$body = $partes[1];
echo $header;
fclose($sock);
?>
Novo site terá integração com buscador Bing e com feeds de Twitter e Facebook.
Nova versão traz sincronização de favoritos e melhoria de 30% na velocidade.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.