Seguinte: Eu tenho um programa em C++ que resolve um problema, e um programa visualizador das instâncias do problema em Java, que atualmente lê os dados de um arquivo. Gostaria agora de fazer o programa em Java receber diretamante os dados do programa em C++ (uma estrutura tipo um vector de inteiros ou simplesmente números em sequência).
Como posso fazer isso de uma forma simples e independente de plataforma?
Sockets, e não se fala mais nisso.
Pesquise sobre JNI, é uma parte do Java que conversa com código nativo.
JNI não é lá muito “independente de plataforma”
Correto thingol, não reparei o final da frase.
Obrigada, gente. Estou pesquisando sobre sockets (já tinha pesquisado JNI…)
Depois de aprender sockets, pesquise sobre DataOutputStream e DataInputStream.
Outra coisa: em seu programa C, se você quiser enviar os tais números em binário em vez de ASCII, e se estiver usando alguma máquina onde a ordem dos bytes é diferente da do Java (como é o caso das máquinas Intel ou AMD), é necessário usar htons ou htonl para “inverter” os bytes.
Bom, vc pode usar sockets se vc puder alterar o programa em C, e para manter a parte “independente de plataforma” você vai precisar de uma biblioteca para abstrair essa parte. Conheço uma HawkNL, no google achou uma GNet, enfim, tem várias, é questão de dar uma procurada melhor…
Outro modo seria se você puder usar esse programa em C para, ao invés de escrever em arquivo, escrever na saída padrão, e aí usar essa saída como entrada para o programa em java… mas acho que isso é mais ou menos o que vc já tem hoje
flw