[SP-pm] duvida sockets e select

Tiago Peczenyj tiago.peczenyj at gmail.com
Sat Nov 24 13:52:56 PST 2012


Ok

Recebi a dica de usar sysread e "funciona"

entretanto o meu problema é: eu tenho um protocolo orientado a linhas, cada
linha é um "evento" que eu preciso processar. posso pegar uma linha pela
metade e eu teria que guardar para "emendar" no proximo loop.

pensei em algo como

while ($buf =~ s/^(.*)\n//) {
    process_message("$1");
 }

mas como eu faço na situação

envio

linha1
linha2
linha3

e quando leio...

buffer => "linha1\r\nlin";

eu preciso guardar o "lin" pra proxima fase. tem alguma forma menos obscura
de faze-lo?

2012/11/24 Tiago Peczenyj <tiago.peczenyj at gmail.com>

> Ola Galera
>
> Eu tenho algo mais ou menos assim
>
> https://gist.github.com/4141422
>
> O que acontece é que, se eu fizer
>
> bash$ (echo "xxx" ;sleep 30 ; echo "yyy") | nc localhost 9090
>
> ta de boa, o xxx e o yyy são impressos em momentos distintos mas
>
> bash$ (echo -n "xxx" ;sleep 30 ; echo "yyy") | nc localhost 9090
>
> O server TRAVA enquanto
>
> Agora o que acontece: eu tenho que escutar em outra porta (otimi o codigo
> mas basicamente eu inicio outro IO::Socket::INET em outra porta e trato
> dentro do main loop) outros clientes e fazer coisas divertidas com eles.
> com o server travado eu não faço mais nada.
>
> achei q era o getline mas substituindo por getc para ler caracter a
> caracter eu só consigo ler o primeiro antes de travar.
>
> alguma ideia?
>
> outra coisa, eu suportamente tenho que ler um protocolo simples, uma linha
> com um padrão, como
>
> a|b|c|d\r\n
>
> então o getline me é util, não achei outra forma de brincar com um buffer
> sem ficar maluco. alias eu deveria suportar utf-8 na entrada porem eu não
> vi diferença no binmode, tem algum truque? estou esquecendo de algo?
> o common::sense ja faz algo por mim?
>
> Obrigado
>
>
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://pacman.blog.br
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20121124/f7cc4fc9/attachment.html>


More information about the SaoPaulo-pm mailing list