IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Communication entre C et JAVA


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Communication entre C et JAVA
    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 la question
    - 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.

  2. #2
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Les socket locaux : pas besoin d'être connecté à un réseau. Je les utilise assez fréquemment chez moi, où mon ordinateur n'est pas connecté à un réseau quelconque.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    En fait, j'ai fait 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.


    Mais j'ai peut-être une solution...

    En fait j'ai actuellement un prog c++ qui arrive à communiquer avec mon prog en C par DDE, je vais donc transformer mon code C++ en dll pour pouvoir l'appeler à partir de java avec JNI...

    Je vais tester, je vous tiens au courant pour savoir si ça marche... ça pourrait sevir à d'autres...

  4. #4
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Je suis pas sûr que tu aies compris : il existe au moins deux sortes de sockets. Lers sockets internet et les socket locaux pour lesquels il n'y a pas besoin de carte ethernet, ni même être connecté à un réseau. Tout, absolument tout se passe en local.

    J'ai utilisé ce genre de technique avec mon portable dont la carte ethernet ne fonctionnait pas, qui n'était connecté à aucun réseau.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    A part les socket, il y a d'autres moyens de communiquer sous windows: les IPC (par exemple les MailSlot ou les Named Pipe).

    Malheureusement, ces objets ne sont pas accessibles nativement depuis Java (portabilité oblige). Donc il faut faire une extension JNI pour que java puisse utiliser les IPC, et apres ca roule.

    Sinon il reste toujours les fichiers
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci pour vos réponses...

    Pour l'échange de données par fichier... euh c'est crade quand même
    et puis les utilisateurs ne seront pas admin sur leurs postes donc, ça m'a l'air risqué...

    Sinon j'ai réussi à coder une DLL qui communique par DDE, et j'appelle cette librairie depuis du JAVA via JNI : ET CA MARCHE !

    Donc j'ai résolu mon problème au final...

    mais merci pour vos pistes, je vais regarder sur la toile à quoi elles correspondent plus précisément car ça pourra m'être utile pour l'avenir !

    Merci encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/08/2008, 17h50
  2. [Interopérabilité] Communication entre une appli java et une appli c++
    Par r0d dans le forum Architecture
    Réponses: 4
    Dernier message: 05/05/2008, 19h27
  3. Point commun entre python et java
    Par mali_67 dans le forum Général Python
    Réponses: 5
    Dernier message: 25/04/2008, 10h42
  4. Réponses: 5
    Dernier message: 23/09/2006, 13h18
  5. Réponses: 7
    Dernier message: 06/04/2005, 19h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo