[Cascavel-pm] client/servidor

Luis Motta Campos luismottacampos em yahoo.co.uk
Terça Janeiro 22 11:12:39 PST 2008


Ricardo Stock wrote:
> Bom dia a todos da lista....
> 
> Gente, estou começando a desenvolver uma aplicação cliente/servidor, a 
> primeira que estou fazendo :-) em plataforma win32, porém estou com uma 
> duvida. O servidor parece estar rodando ok,  pois o executo e o mesmo 
> fica aguardando a conexão.

   Lamento, mas acho que você não está prestando atenção. O teu servidor 
"morre" nos primeiros 0.06 segundos de execução (leia detalhes completos 
no anexo).

> Estou iniciando o desenvolvimento de um programa que fara determinadas 
> funções dependendo do comando recebido, mas isto é coisa para o futuro.

Eu sinto cheiro de buraco de segurança grande o bastante para passar a 
torcida do flamengo, paramentada para a final do campeonato, com 
bandeiras e tudo. Recomendo que você não faça isso, ou, se fizer, não 
diga que eu não te avisei. ;)

> O erro s da, ao que parece quando o cliente tenta enviar a mensagem de 
> teste, me da a mensagem que nao foi possivel chamar o metodo send, ai, a 
> duvida, pois, não sei o que fazer....
> 
>  segue o código abaixo. Caso alguma sugestão, sera de bom agrado
> 
[código horrível e sem formatação cortado daqui]
Que vergonha!
Você nem mesmo testou esta coisa!
O teu programa de servidor não funciona.

Os logs em anexo são a minha sessão de debugging sobre o teu código de 
servidor.

Teu problema pode ser dividido em partes:

1. Você não sabe teoria (bom, ninguém nasce sabendo). Leia "Redes de 
Computadores" do Andrew Tanenbaum (ISBN 8535211853), antes de tentar 
escrever programas "cliente-servidor". Eu garanto que você não vai se 
arrepender.

2. Você não sabe usar o CPAN: Procure por Net::Daemon, ele resolve 60% 
dos seus problemas de programação. Depois, você vai precisar escrever um 
cliente, mas isso é mais simples.

3. "use strict" e "use warnings" vão mostrar os erros do seu código mais 
facilmente. Não deixe nunca de usar estes pragmas da linguagem perl no 
início dos seus programas.

4. Não reinvente a roda. Se você não tem um bom motivo para escrever um 
cliente e um servidor você mesmo, não faça isso. "Curiosidade" e 
"oportunidade de aprendizado" ou "projeto pessoal" são boas desculpas, 
contanto que o código (simplista, cagado) que sair das suas primeiras 
100 tentativas não chegue nem perto de um sistema sério (seja comercial 
ou não).

E, se você prometer ignorar o meu pequeno acesso de megalomania, eu 
implementei um servidor HTTP e postei o código no meu blog. Ele pode te 
dar idéias interessantes sobre como transmitir dados simples 
(possivelmente codificados usando o módulo "YAML"?) e que podem ser 
utilizados com os clientes HTTP que o módulo LWP já implementa. A URL é 
esta aqui:

http://spaansefilosoof.blogspot.com/2007/05/eu-sou-o-maior-do-mundo.html

Por último, para você não esquecer: TESTE SEUS PROGRAMAS ANTES DE 
PERGUNTAR. Aqui, apenas se posta código sem testar se você está 
respondendo para alguém (e, neste caso, a responsabilidade é da pessoa 
que lê a resposta). Se você faz perguntas, por favor, teste.

Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : debug.log
Tipo  : text/x-log
Tam   : 1824 bytes
Descr.: não disponível
Url   : http://mail.pm.org/pipermail/cascavel-pm/attachments/20080122/68997afb/attachment-0001.bin 


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