[Cascavel-pm] Problema com autoflush em sockets

Luis Motta Campos luismottacampos em yahoo.co.uk
Sexta Junho 1 05:01:18 PDT 2007


On May 31, 2007, at 9:12 PM, Nilson Santos Figueiredo Junior wrote:
> On 5/31/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
>>    O que é isso? É um web service? Que protocolo é este? É
>> proprietário? Você tem acesso ao fonte do Java?
>
> É um protocolo bizarro proprietário.

   Se você tiver outra opção, eu recomendo mudar de fornecedor, e  
informar este que, quando ele decidir usar protocolos de  
especificação aberta vocês voltam a conversar... ;-)

> Estou dando uma olhada no fonte decompilado aqui agora... código
> gigantesco e meio porco,

   Você descreveu 98,99999999999999999% de tudo o que eu já vi  
implementado em Java até hoje.

> ainda não consegui localizar aonde está o protocolo mesmo,  
> possivelmente é algo espalhado por várias das 200
> classes.

   Eu achei que isso fosse um "design feature" de java... :-)

>>    Isto é um serviço pago? Qualquer pessoa pode usar?
>
> É um serviço gratuito, mas limitado. O que eu quero fazer é não
> precisar de utilizar o applet Java pra poder fazer aplicações
> arbitrárias e mais interessantes.

   Talvez se você explicar aos caras que quer portar o cliente para  
Perl, eles te ajudem. Você já tentou isso?
   Seu problema é informacional, não técnico.

>>    Onde está a especificação do cliente Java?
> Não existe.

   /me fala palavrao em portugues, mas ninguém entende nada aqui.

>>    Outra coisa: me parece que você aceitou o default de ter BLOCKING
>> READS (já que você não disse "Blocking => 0" no construtor). Quando
>> eu acrescentei isto, minhas leituras não bloquearam mais.
>
> Eu *quero* que bloqueie. O problema é que ela deve bloquear só
> enquanto não tem nada, entendeu? Quando chega algo, desbloqueia. Pra
> isso você usa método can_read() de um IO::Select, sem timeout.

   OK, você precisa de blocking read()s então. Anotado.

> E, mesmo se eu quisesse um socket nonblocking, simplesmente setar
> Blocking => 0 não funciona sob Windows, dá erro porque a implementação
> por baixo não suporta (mas existe outra forma mais "pé duro" de fazer
> isso acontecer, se alguém precisar basta buscar referências sobre o
> assunto no PerlMonks).

   Ui. Medo. Não, obrigado, nunca Janelous... ;-)

>>    Infelizmente, parece que o seu serviço é dedicado para o seu IP,
>> já que eu consigo apenas "connection refused" quando tento usar ele.
>
> Não, não é. Ele é público. É um site brasileiro sobre stock trading:
>
>   http://br.advfn.com
>
> Bom, talvez o processo de login no site "autorize" o IP no back-end
> deles, realmente não sei. Mas aposto mais em alguma restrição aí do
> seu lado. ;-)

   Sim, pode ser. Os caras andaram fuçando tanto no firewall estes  
dias que qualquer coisa que fica fora do ar agora é culpa do FW...  
está todo mundo meio traumatizado.

>>    Aqui tem o código que eu copiei / brinquei, para você ter uma
>> referência. Deve estar muito parecido com o seu (já que foi com ele
>> que eu comecei).
>
> Acontecem os mesmos resultados. E, no Linux, onde o Blocking => 0 é
> suportado, ele simplesmente não lê nada de volta.
>
> Em situações normais eu iria assumir que o servidor de alguma forma
> não está respondendo o meu cliente "não-oficial". Contudo, a resposta
> do servidor chega de volta no meu monitorador de pacotes.
>
> Ainda estou sem entender porque o Perl não está "enxergando" isso.

   Eu também não entendi... e lamentavelmente não tenho tempo  
sobrando para debugar isso.
   Mas gostaria de acompanhar.
   Acho que a melhor aproximação é conversar com os caras e explicar  
que você quer fazer uma biblioteca cliente em Perl. Eles devem topar  
ajudar. Afinal, de graça, até injeção na testa... ;-)

   Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}




Mais detalhes sobre a lista de discussão Cascavel-pm