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

Langage Java Discussion :

Comment pouvoir traiter des données dans la memoire partagée ?


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut Comment pouvoir traiter des données dans la memoire partagée ?
    salut,

    je voulais savoir au debut si la notion de memoire partagée est supporté par java ou pas? en effet ce que je desire savoir et faire bien sur c'est comment je peux acceder depuis mon applicatif java a une memoire partagée par un applicatif C/C++ qui y injecte des données chaques x secondes...il me faut recuperer ces données de cetet zone partagée et les traiter ...donc est ce possible? et si oui j'aurais besoin de quoi? quels seront les types ou les packages a utiliser en java pour assurer ca ..un petit exemple me ferait bien eclaircir les idees .

    merci

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Je ne pense pas que tu puisses faire ca en java...

    Le mieux pour faire communiquer un prog java et un prog c++, c'est d'utiliser les JNI.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    aurais tu un exxemple stp?

    et comment je peux acceder a cette memoire partagee ? j'avoue que c'est la premiere fsi que je decouvre ce cote !

  4. #4
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    Comme te l'a dit wichtounet, on ne peut (a priori) pas accéder à la mémoire partagée en Java.

    JNI est une API qui permet à un programme java d'utiliser des bibliothèques C / C++. Ainsi, ce que tu pourrais faire, c'est instancier ton applicatif C++ via java et récupérer les données stockées dans cet objet via des getters.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    JNI est une API qui permet à un programme java de communiquer avec un programme écris dans un autre langage pour peu que ce dernier respecte un certain nombre de conventions (ordre d'empilage des paramètres entre autre).
    Avec JNI, tu auras donc la possibilité de communiquer avec un programme écris dans un langage supportant l'accès en mémoire partagée.

    Quitte à en arriver là, je préconiserais plutôt un daemon C++ qui surveille la zone de mémoire partagée et qui broadcast en UDP ou en communication directe TCP des infos que tu récupère très facilement dans n'importe quel langage, y compris java.

    Il ne faut pas penser socket seulement quand il y as plusieurs machine, les socket permettent la communication inter process de manière simple !

  6. #6
    Membre confirmé Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Points : 508
    Points
    508
    Par défaut
    Alwin, t'es en train de dire que la solution serait de développer 2 applis ? 1 en java qui en utilise 1 en C qui a pour but d'interagir avec l'application C cible via 1 mémoire partagée ??
    Un peu tordu comme principe non ?

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    A moins qu'il n'ais la main sur l'appli qui partage ses données en mémoire afin qu'elle ne le fasse plus mais devienne compatible JNI mais quand je vois tomber une question de ce genre, je part du principe que l'applicatif qui partage ses données est un existant

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Points : 234
    Points
    234
    Par défaut
    Je ne maîtrise pas les objets distribués, mais si le partage doit se faire via un réseau je sais que l'api Java est livrée avec une librairie pour les objets CORBA et plus spécifiquement pour les objets Java RMI. Jeter un coup d'oeil aussi à la sérialisation (http://java.sun.com/j2se/1.5.0/docs/...putStream.html)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    merci pour votre aide ,

    mais quoique j'ai compri ce que vosu avancez comme technique ..j'avoue que je ne peux toujours pas comprendre comment s'y prendre cote codage?

    quelles sont les etapes que ej dosi deja faire pour y arricer dans mon code ?
    un exemple me ferait vraiment eclaircir les idess..merci

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    salut,

    le partage est bel et bien sur le reseau... je dosi donc me connecter a une machine distante qui heberge l'applicatif C ou se trouve aussi la memoire partagee...et je dois y recuperer des données stockées sous forme d'un tableau de 2180*11898 elements de type char ( donc un tableau de byte ) ...

    donc comment deja se connecter a cette machine , avoir la main sur l'applicatif c et recuperer les données qu'il injecté dans la memoire !!!

    merci de me guider !!!

  11. #11
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Pour te connecter à une machine via le reseau tu peux utiliser les sockets de Java.

    Java sockets

    Maintenant ce que tu pourrais faire (idée un peu naive peut être.. ).. Mais pourquoi tu ne généres pas un fichier, correctement formaté, par ton application en C, que tu viendrais lire via le reseau avec ton application Java..

    C'est une idée.. parmis tant d'autre..

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    je el sais ca sera mieux sauf que je dosi le faire avec la memoire '(exogence ) ...
    en plus la solution de socket est bonne selon toi?

  13. #13
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par fabszn
    Hello,

    Mais pourquoi tu ne généres pas un fichier, correctement formaté, par ton application en C, que tu viendrais lire via le reseau avec ton application Java..
    comme le prog C écrit toutes les x secondes, ça va etre un peu chaud, surtout pour la concurrence.

    le mieux (ça a déjà été proposé je crois) c'est de faire un démon C que tu interroges à distance et qui peut lui te donner les données que tu veux. C'est le plus simple et le plus efficace je pense. Apres soit c'est le démon qui broadcast (comme proposé) soit il propose des services permettant de l'interroger. Ca dépend de ce que tu veux vraiment. Avoir toujours les dernières données, ou interroger de temps en temps ...

  14. #14
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Oui effectivement ma solution est bcp trop naive .. et pas du tout adaptée..

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    au fait les données seront denichées touttes les x secondes par l'applicatif java ... ceci suppose donc que l'applicatif C injecte toutes x secondes des données dans sa memeoire partagee ...
    ceci dit , comment interroger le daemon comme tu dis? tu veux dire une connection reseau ou bien passer par JNI ? J'ai pas bien saisi...

  16. #16
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    JNI je ne connais pas ... donc je peux pas dire.

    moi je pensait simplement à un petit serveur qui te renvoie ce que tu veux quand tu l'interroges.

    mais sinon, l'idée d'Alwin ave la diffusion broadcast ça peut te suffire. Ca encombre un peu le réseau ptet mais apres ton prog à juste à "sniffer" et récupérer ce qu'il veut. Apres tu peut ptet faire un mix des deux.

    Si tu as une ip fixe pas besoin de bradcast, ton deamon lis les données toutes les x secondes et les envoie sur un socket de ton appli java.

    Ya pas mal de solutions, moi c'est juste des ptites idées comme ça. apres ça dépend un peu de ce que tu veux.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 418
    Points : 67
    Points
    67
    Par défaut
    J'avoue que c'est toujours un peu floue pour moi...au fait si on raisonne teape par etape deja: comment je me connecte directement a l'applicatif disatant heberge sur une machien X ? aurais je besoin d'un applicatif C pour le faire? comme ca les deux applicatifs communiquenet entre eux ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/04/2013, 12h51
  2. Réponses: 3
    Dernier message: 16/09/2010, 12h54
  3. Réponses: 1
    Dernier message: 01/09/2006, 20h13
  4. [MySQL] Comment insérer des données contenant un "\" dans
    Par ALEX77 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/09/2005, 16h04
  5. Réponses: 23
    Dernier message: 22/04/2004, 11h55

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