Página 2 de 2

Re: Ajuda com comunicação entre aplicações

Enviado: 11 Mar 2011 11:35
por Stanis Luksys
Opa,

Eu faria utilizando sockets mesmo, pois além de ser possível implementar em rede, independe de plataforma.

Testei aqui em casa com dois pcs, o meu que é linux e o outro que é windows e consegui transferir arquivos inteiros, de até 20MB.

Dá pra explorar muito a comunicação via socket, pois assim como foi dito à exemplo dos arquivos ini, você pode enviar mensagens padronizadas, praticamente inventando um protocolo próprio de comunicação, com checksum e etc.

Eu transferi um arquivo rar simplesmente lendo ele com memoread, e enviando para a outra máquina um hash com informações como o nome dele, o md5, a data, o tipo mime, e claro o conteúdo propriamente. Para incrementar criptografei tudo com chave assimétrica RSA (com o openSSL), garantindo integralmente a segurança e privacidade dos dados.

Além disso realizei testes onde foi possível executar diretamente comandos na máquina remota, inclusive puxando arquivos, bastando para isso preparar a máquina receptora para executar os comandos recebidos, com CMD, START, RUN, ou OpenProcesss em multi-thread. Este processo é completamente transparente e pode ser utilizado por "softwares mal intencionados" para criar um backdoor que só mesmo um bom firewall pode interceptar. Pode ser usado pelo lado bom da força também, baixando atualizações em background por exemplo.

No caso do WIndows, o Avast antivírus nem percebe. Claro que no Linux não é tão simples porque normalmente o iptables rejeita tudo.

Abraços.

Re: Ajuda com comunicação entre aplicações

Enviado: 11 Mar 2011 11:48
por Maligno
Cada ferramenta tem sua utilidade. Sockets é ótimo para muitas coisas e não tão bom para outras. Para comunicação entre processos da mesma aplicação o sistema de mensagens do Windows traz mais vantagens. Até porque, é comum dedicar tratamento especial a várias mensagens do próprio Windows. E se essa mensagens já serão manipuladas, fica simples incluir mais algumas, customizadas, para exercer algum tipo de controle sobre os diversos formulários da aplicação.

Comunicação inter-processos (inclusive entre SOs distintos) fica muito fácil com o uso de sockets e abre um grande leque de possibilidades. Esta ferramenta é apropriada para este caso.

Re: Ajuda com comunicação entre aplicações

Enviado: 11 Mar 2011 11:59
por Stanis Luksys
Opa,

Mas no caso ele está tratando de duas aplicações diferentes, e tendo isto em vista, imaginei que um dia a necessidade dele poderia ser de rodar o emissor das mensagens num pc central e emiti-las para varios pcs em uma rede.

Este tipo de mensagem broadcast que você está citando, no Linux é feito por um componente chamado DBus.

Embora o autor do tópico esteja usando Delphi e aparentemente jamais vai usar Linux, vale a pena explorar um pouco as opções afim de esclarecimento e bate papo. No Linux o sujeito pode ou não habilitar o DBus, assim como qualquer outro componente, inviabilizando mensagens deste tipo, a menos que o autor do programa se preste a ir no cliente e ficar configurando. Sockets não da pra desabilitar, pois é tratado como um tipo de arquivo especial nativo, mais ou menos como um pipe.

Abraços.

Re: Ajuda com comunicação entre aplicações

Enviado: 11 Mar 2011 12:08
por Maligno
Não, você não entendeu. Eu apenas quis dizer que, na minha opinião, usar o sistema de mensagens do Windows seria mais apropriado para comunicação entre processos da mesma aplicação. Também poderia ser utilizado em aplicações diferentes rodando no Windows, claro. Até foi sugerido isso. Mas o OP optou por usar sockets e parece que não apenas funcionou muito bem para resolver o problema, como também tornou mais fácil realizar a tarefa. Depois que ele anunciou o resultado, nós só continuamos a discutir o assunto.

Re: Ajuda com comunicação entre aplicações

Enviado: 11 Mar 2011 12:12
por Stanis Luksys
Maligno escreveu:Depois que ele anunciou o resultado, nós só continuamos a discutir o assunto.
Por isso mesmo eu disse que era apenas a título de bate-papo, mas quem sabe daqui um dia ou um ano, alguém faz uma busca no google e cai aqui encontrando o que precisava, ou pelo menos informações interessantes...

Abraços!