Rechercher : dans
Par :

Communication entre C et JAVA

Dernière réponse le 19 jan 2007 à 12:27:22 djamonphil, le 17 jan 2007 à 15:52:56 
 Signaler ce message aux modérateurs

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.

Configuration: Windows 2000
Firefox 2.0.0.1

Meilleures réponses pour « Communication entre C et JAVA » dans :
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
Interfaces graphiques pour SQLite VoirSQLite est un formidable moteur de base de données, ne nécessitant pratiquement aucune administration, portable (tous systèmes) et accessible de pratiquement tous les langages (C, C++, Java, Python...). Contrairement à mySQL, il ne nécessite pas...
2 bons livres pour Java et C++ VoirPour ce qui est de l'api java, pas besoin d'aller chercher loin, le site de sun. Néanmoins, voici un bon livre "Thinking in java" de Bruce Eckels, c'est le meilleur de tout ce que j'ai lu sur java et je le conseille vivement. Auparavant, il avait...
Télécharger PSPad VoirPSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS, Javascript, php ou autres langages de programmation (C++, Java, Python...). Les fonctionnalités sont impressionnantes: ...
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Introduction à la programmation orientée objet VoirUn nouveau concept de développement Extrait de « Au coeur de ActiveX et OLE », de David Chappel "Au cours des 35 dernières années, les concepteurs de matériel informatique sont passés de machines de la taille d'un hangar à des ordinateurs...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
Java - Les packages VoirIntroduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...

1

arth, le 17 jan 2007 à 23:29:32

"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?
Le loup, solitaire et mystérieux.

Répondre à arth

2

mamiemando, le 18 jan 2007 à 00:49:27

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/Impe­ratifs/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-c­ommande-systeme-java

Bonne chance

Répondre à mamiemando

3

arth, le 18 jan 2007 à 05:28:08

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

Répondre à arth

4

djamonphil, le 18 jan 2007 à 15:02:55

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...

Répondre à djamonphil

5

 arth, le 19 jan 2007 à 12:27:22

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...
Le loup, solitaire et mystérieux.

Répondre à arth