Communication entre C et JAVA

Fermé
djamonphil Messages postés 3 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 18 janvier 2007 - 17 janv. 2007 à 15:52
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 19 janv. 2007 à 12:27
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 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
18 janv. 2007 à 00:49
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 mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
17 janv. 2007 à 23:29
"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 mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
18 janv. 2007 à 05:28
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 jeudi 6 avril 2006 Statut Membre Dernière intervention 18 janvier 2007
18 janv. 2007 à 15:02
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 mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
19 janv. 2007 à 12:27
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