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

Entrée/Sortie Java Discussion :

JNI : attaquer une application déja lancée!!


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut JNI : attaquer une application déja lancée!!
    Bonjour à tous!

    Voila mon problème est le suivant :
    comment, à partir d'un programme C/C++, attaquer une application Java déja lancée (donc en faite attaquer la JVM) pour modifier cette application Java !?

    Avec la JNI il est possible soit de modifier une application Java seulement si c'est l'application Java qui a fait appelle à une procédure ou une fonction C d'une librairie (dll ou so),
    soit que démarrer un JVM et de créer des classes et objets.

    Donc comment faire pour accéder à une application Java déja lancée???

    Merci d'avance !!!

    Tony

  2. #2
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Premièrement est-ce que ton application a une porte (interface) pour qu'on puisse l'accéder?

    Tu peux l'accéder par corba (RMI), par socket, par shared memory, etc... (IPC: Inter-Process communication) mais il faut que ton application java soit déjà prévue pour ce type de communication.

    Sinon sois plus précis, que désires-tu faire exactement?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    Bonsoir jowo!

    En fait voilà ce que fait mon programme :
    -c'est une IHM (swing) qui permet de gérer des saisies et des sauvegardes dans des fichiers
    -cette IHM permet aussi de lancer des programmes (Fortran) de calculs

    Ces programmes de calculs appelle une procédure C en lui passant en paramètre un entier. Cette entier correspond au pourcentage d'avancement du calcul.

    Cette procédure C doit en fait faire avancer une JProgressBar de l'IHM Java (barAvancement.setValue(int pourcentage) )

    Mais bon en JNI ça marche pas car cette procédure n'est pas appelé par l'IHM Java!

    Voilà!

    As tu une solution? J'avais pensé à de la mémoire partagée pour stocker l'entier !!?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    Re jowo

    Juste pour te dire que j'ai résolu mon problème !!

    J'ai créer une classe socketServeur qui écoute sur un port donné pour lire le pourcentage qu'on lui envoie.

    Ensuite j'ai créé une autre classe Java (SocketClient) qui envoie ce pourcentage vers la socketServeur.

    Enfin j'ai créé une procédure C qui démarre une JVM, créée une instance dans ma classe SocketClient et appelle la méthode d'envoie de données de ma classe (tt ça avec l'API JNI).

    Merci de tes conseils

    Tony

  5. #5
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    re Tony

    Ne serait-il pas plus simple que ta fonction C communique directement (via un socket) avec ton SocketServer?

    Je suis heureux si j'ai pu t'aider....

    Pense au bouton

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 7
    Par défaut
    re re Jowo

    Ben au début j'avais coder une procédure C qui communiquer directement avec la SocketServer en utilisant l'API WinSock de Windows mais j'ai eu des problèmes de concordances de types entre les types de base C et Java.

    Donc j'ai préféré directement implémenter mon client en Java !!

    Merci encore

    Tony

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

Discussions similaires

  1. Mise à jour d'une application déja publiée?
    Par Pingva dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/06/2008, 14h26
  2. relancer une application déja ouverte
    Par fally dans le forum C#
    Réponses: 10
    Dernier message: 12/03/2008, 19h49
  3. savoir si une application est lancée.
    Par ataya dans le forum Forms
    Réponses: 0
    Dernier message: 27/02/2008, 16h25
  4. Comment savoir si une application est lancée ?
    Par Teddy dans le forum Delphi
    Réponses: 2
    Dernier message: 02/07/2006, 19h33
  5. [VB]donner le focus à une application déja ouverte ou fermée
    Par Nicko29 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 21/01/2006, 14h28

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