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 :

Possibilité de se passer de JNI ?


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Possibilité de se passer de JNI ?
    Bonjour,

    J'ai dévelopé une application en Java avec Netbeans (ubuntu/kernel 2.6), et je dois intégrer une carte vidéo HD-SDI. Le problème c'est que peu d'entre elles ont un SDK pour Linux, et celles qui en ont un, ce dernier est écrit en C++.
    Alors n'ayant pas envie d'utiliser la JNI, je me suis dis que je pourrais installer la carte dans un autre pc qui lui serait sous windows, déveloper une autre application server en C++ avec visual, et simplement demander depuis mon appli java des services au pc sous windows via un socket (les deux machines seront en réseau ethernet et les ip sont connues).
    De plus, la partie java est très légère et tient sur un petit pc portable, ce qui m'arrange. Alors que si j'intègre la carte vidéo dans ce même pc, cela va demander de grosses ressources, donc mieux vaux un autre pc dédié.

    Alors ma question est la suivante : est-ce possible depuis une appli écrite en java sous linux d'ouvrir un socket et dialoguer avec une appli écrite en C++ sous windows ? Logiquement je dirais oui, mais l'ayant jamais fait j'aimerais confirmation avant de me lancer dans l'aventure.
    (désolé si c'est une question ridicule, mais fort heureusement il ne tue pas )

    Merci pour vos réponses,
    Dan.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Bien entendu, c'est possible : les deux applications communiquent au moyen de socket, sur le réseau (même local à la machine). Tant qu'il y a un protocole commun, il n'y a vraiment aucune raison pour que les deux applications ne fonctionnent pas

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Ok
    Je m'en doutais un peu car samba sous linux accède bien au réseau windows, mais bon, une vérification ne coute rien.

    Merci,
    Dan.

  4. #4
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut
    Tu risque par contre d'avoir quelques problemes au niveau de l'arrangement des octets (little/big endian) qui est différent entre java et C++ : j'ai développé un client emule entierement en java et il m'a fallu faire quelques conversions afin de faire passer des entiers ... et surtout que cela soit compris de par et d'autre.

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par leyee Voir le message
    Tu risque par contre d'avoir quelques problemes au niveau de l'arrangement des octets (little/big endian) qui est différent entre java et C++

    Normalement, si c'est sûr la même machine, c'est le même endian il me semblait.

    Mais de toute façon, pour bien faire, côté C++, il faut penser à utiliser les fonctions ntohl ou ntohs à la réception et htonl à l'envoi (mais seulement pour les entiers).

    Et du côté Java, il vaut mieux utiliser directement les SocketInputStream et SocketOuputStream que l'on obtient avec la classe Socket (car il peut y avoir des problèmes de charsets avec des classes plus évolués)

  6. #6
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 621
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 621
    Points : 15 704
    Points
    15 704
    Par défaut
    Citation Envoyé par millie Voir le message
    Normalement, si c'est sûr la même machine, c'est le même endian il me semblait.
    Non en C/C++ ca dépend du type de machine, mais en JAVA l'ordre interne est toujours le big endian.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/03/2010, 09h13
  2. Réponses: 3
    Dernier message: 21/01/2010, 09h53
  3. Réponses: 15
    Dernier message: 27/08/2007, 15h42
  4. [VB6] Possibilité de passer un nom de sub en parametre
    Par Vesta dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 31/05/2006, 10h17
  5. Possibilité de passer le nom d’une table en variable ??
    Par nicolas310380 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 21/02/2006, 14h12

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