0

Introdução a Sockets no PHP

criado por Luiz Ribeiro em 30/09/2002 12:35am
Agora que você já sabe abrir uma nova conexão, que tal começar a ler e escrever na mesma?

Para ler uma socket usamos a função fgets(), que tem a seguinte sintaxe:

string fgets ( int fp [, int length])

Esta função retorna uma string com o que está escrito na socket, a partir do 'ponteiro', seu primeiro parametro corresponde à variável da socket ($conex por exemplo), e o segundo parâmetro é o tamanho da string que vai ser pega da conexão.

Exemplo de uso da função fgets:

<?php
$fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "Erro: $errstr ($errno)<br>\n";
} else {
    fputs($fp, "GET / HTTP/1.0\r\nHost: www.google.com\r\n\r\n");
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

Este pequeno script abrirá uma conexão com o website google.com e vai 'pedir' para o servidor o conteúdo da index do site.

Você deve ter notado que nesse exemplo usamos duas funções que ainda não foram apresentadas anteriormente: fputs() e feof().

A função feof() testa se a sua conexão chegou ao 'fim-da-linha', ou seja, se já terminou de transmitir os dados que deveriam ser transmitidos (o fim do 'ponteiro').

A função fputs() escreve algo na conexão, sua sintaxe é a seguinte:

int fputs ( int fp, string str [, int length])

O primeiro parâmetro da função fputs() é a variável que a socket usa, no último exemplo foi $fp, o segundo parâmetro é a string que irá ser escrita na socket, o terceiro e último parâmetro é opcional, ele contém o tamanho da string a ser escrita na socket.

Comentários:

Mostrando 1 - 10 de 13 comentários
alex lima disse:
Pessoal tenho uma duvida se existe um modo de estabelecer conexão entre
por meio de Socket em PHP, onde através de um site obtêm informações como por exemplo se um computador ligado ou desligado? Parecido com acesso remoto.
16/04/2014 3:09pm (~4 anos atrás)

nettcom disse:
estou querendo fazer uma conexão ao meu proprio site usando a porta 2082 (www.jlle.org) senha e user
eu posso conectar direto (http://usuario:senha@jlle.org:2082)
porem queria alguma maneira de acessar atravez de uma outra pagina em php para que outros usuários tenham acesso a alguns beneficios tipo um formulario, eles prenchem e envian logo o arquivo deveria executar a conexão enviar os dados atraves da porta aberta fechar e dar retorno de OK ao usuario. alguem poderiá me ajudar atenciosamente

max
22/09/2003 1:43pm (~14 anos atrás)

Paulo disse:
Com o uso dos sockets é possivel fazer um script em php que envie mensagens instântaneas?
15/09/2003 9:41pm (~14 anos atrás)

Nend disse:
Eu poço utilizar nisso o mesmo bot --> normal q eu utilizava no meu mirc? Ou vou ter q criar um bot q seja compativel com o php?
03/07/2003 12:24pm (~15 anos atrás)

Eu fiz um bot de exemplo e ja o disponibilizei aqui na PHPBrasil.com, se quiserem estudar ele é bem simples só para estudo.
16/12/2002 11:51am (~15 anos atrás)

Luiz Ribeiro disse:
Olá,
Pessoal... Desencanem deste bot, aí tem tudo para vocês fazerem o bot, só deêm uma lida no RFC do protocolo ou executem o comando de debug do mIRC, q eu passei no artigo. Não sei se vou lançar meu bot, e se for, não sei quando, não fiquem esperando por mim, tentem fazer sozinhos, escrevi este artigo justamente para isso, fazerem vocês mesmos isso.

Quanto a conectar a um servidor POP3, leiam o RFC também, é bem fácil de entender o RFC do POP3... Leiam lá, sabendo trabalhar com o protocolo, fica fácil.

Vou procurar aqui na minha máquina por algum exemplo que eu tenha feito, que conecte a um servidor POP3, se eu encontrar, passo aqui para vocês...

Um abraço,
Luiz Gustav Cardoso Ribeiro
23/10/2002 3:00pm (~15 anos atrás)

Caio Filipini disse:
Luiz Gustavo,

Muito bom o seu artigo, parabéns!
Pelo que deu pra notar, trabalhar com sockets seria parecido com trabalhar com arquivos?

Valeu!
Caio Filipini
04/10/2002 12:16am (~15 anos atrás)

Luiz Ribeiro disse:
DoS significa Denial of Service.

Olha cara, acho extremamente estúpido querer fazer coisas desse tipo usando php. Qual a utilidade disso?

Abraços,
Luiz Gustavo
01/10/2002 12:16pm (~15 anos atrás)

Lyma disse:
Daniel, Acredito que ele falava de Denial Of Service (DOS)... ;) e realmente é um fato.
01/10/2002 11:20am (~15 anos atrás)

Naum entendi, como executar cmds do Dos?
01/10/2002 9:45am (~15 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)