Communication entre C et JAVA

djamonphil Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai une problèmatique qui me conduit à faire communiquer 2 applications entre elles : l'une est en C (pas C++ mais bien C) l'autre en java. Ces applications tournent en local sur une même machine sous Windows 2000/XP.

Après avoir fouiner sur le net, j'ai trouvé des solutions mais elles ne me conviennent pas :
- CORBA : pas sur qu'il gère le C, et c'est un peu bourrin quand même (ça reviendrai à tuer une mouche au bazooka lol, et j'ai pas le temps de perdre 3 semaines a capter comment ça marche)
- JNI : je ne vois pas bien le principe et toujours pareil : j'ai du C d'un côté, pas du C++. à moins que quelqu'un puisse m'éclairer plus amplement sur le sujet
- serveur Socket : Youpi, ça semble être l'idéal mais pas de bol, la stratégie de sécurité du réseau me l'empêche (c'est dommage ça avait l'air simple comme HelloWorld lol)
- DDE client/serveur mais pas de solutions gratuites pour du DDE sous java.

j'avais pensé à utiliser les messages Windows mais en java... bah par définition, il ne gère pas ce genre de choses vu qu'il est "platform independant", à moins que quelqu'un ne connaissent une librairie qui le permette.

Quelqu'un aurait une idée ?

Merci d'avance

PS: par communiquer j'entends juste faire passer un signal de l'appli java vers l'appli en C pour que cette dernière lance un traitement, et que cette dernière renvoie un % quant à l'état d'avancement de son travail.
A voir également:

5 réponses

mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Ben le JNI pour autant que je sache c'est bien du java qui permet d'embarquer des morceaux de C++ ? Ca parait bien ça :p
http://www.infini-fr.com/Sciences/Informatique/Langages/Imperatifs/Java/jni.html

Corba c'est bien et de mémoire pas si compliqué, mais c'est C++ et Java mais je ne pense pas que ca fasse le C. Ca génère juste un patron de classes client/serveur et corba se débrouille pour les faire communiquer (quelque soit le langage dans lequel est codé le client ou le serveur).
http://jmvanel.free.fr/corba/formation.html

Mais sinon il y a moyen d'exécuter une commande système, en particulier appeler ton programme en C etc...
http://www.infos-du-net.com/forum/58425-21-regler-executer-commande-systeme-java

Bonne chance
1
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
"juste faire passer un signal de l'appli java vers l'appli en C" : c'est à dire juste lancer l'appli en C c'est ca?
0
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Au fait je vois pas le problème des sockets dans ton cas, quelle stratégie réseau t'empêcherais de faire ca?
0
djamonphil Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour vos réponses.

arth à écrit : _______________

c'est à dire juste lancer l'appli en C c'est ca?
__________________________

non en fait, c'est une application qui tourne en continu et qui attends un signal...


arth à écrit : _______________

Au fait je vois pas le problème des sockets dans ton cas, quelle stratégie réseau t'empêcherais de faire ca?

__________________________

disons, que j'ai fais le test sous XP avec un FireWall qui tourne, et ce dernier "gueule" dès que je lance une info au server socket, même en lançant sur le loopback (127.0.0.1)... et les utilisateurs finaux étant des noobs (comprendre newbie, c'est à dire des gens potentiellement pas très aware en informatique), je veux que mon mode de communication soit totalement transparent

mamiemando à écrit : ______

Ben le JNI pour autant que je sache c'est bien du java qui permet d'embarquer des morceaux de C++ ? Ca parait bien ça :p

__________________________

le problème est que mon code en C est un module d'une grosse application sur laquelle je n'ai quasiment pas de contrôle, et je ne pense pas que le JNI soit approprié dans mon cas.


Mais en fait, actuellement, mon programme en java est en C++ mais je vais le recoder en java... or actuellement, je le fais communiquer par DDE, en C++ c'est facile et il y a nativement tout ce qu'il faut avec Visual Studio.

Ce que je peut peut-être faire c'est importer ma classe qui gère le DDE en C++ vers mon (futur) programme java avec JNI. ça vous semble jouable ça ? car je n'ai jamais essayer JNI...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
J'ai bien une idée mais c'est plus du bricolage qu'autre chose et pas sur que ca marche.

dans ton programme java, lorsque tu veux appeler le programme c, tu met mettons la ligne "ok" dans un fichier texte; du côté C tu auras un thread ou une fonction qui regarde si quelquechose est écrit dans le fichier et si oui et si c'est ok il se lance.

Non mais n'écoute pas ce que je te dis ^^ je sais même pas si cela peut marcher.

Enfin ce n'est qu'une idée...
0