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

Java Discussion :

Developpement multi utilisateur


Sujet :

Java

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut Developpement multi utilisateur
    Bonjour,


    Je souhaiterais savoir si il était possible de réaliser des applications multi-utilisateurs en applets java...
    Ma question est peu etre très basique mais je débute en java et je n'ai pas encore trouvé de réponse à cette question...

    Merci d'avance...

    Bonne journée...
    N'oubliez pas de mettre le

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    salut,

    qu'entends-tu par "applications multi-utilisateurs" exactement ?

    si tu parles d'une application où plusieurs utilisateurs peuvent communiquer entres eux par l'intermédiaire d'un réseau (internet), c'est effectivement possible, mais il y a des petites choses à savoir:

    1- une applet non singée s'exécute dans un environnement protégé (ie. une sandbox) qui ne lui permet pas de faire tout ce qu'elle veut. En matière de réseau par exemple, elle n'aura le droit de se connecter qu'au serveur sur laquelle l'applet est hébergée.

    Par exemple, si tu fais une applet que tu publies sur "http://www.monsite.com", l'applet non signée ne pourra se connecter qu'à ce serveur (monsite.com). Tu ne pourras par exemple pas faire une applet qui va se connecter directement à un autre utilisateur. Par contre, tu pourras très bien faire une applet qui se connecte au serveur, le serveur se chargeant alors de joeur le rôle d'intermédiaire entre tous les clients.

    2- une applet signée te permet de définir l'ensemble des droits dont a besoin celle-ci pour fonctionner. A partir de là, tout est possible (notamment se connecter à n'importe qui) à partir du moment où tu as spécifié les bons droits ; si tu autorises tout, c'est comme si tu avais une 'vraie' application Java (type desktop) qui s'exécutait sur le poste client.

    Par contre, pour signer une applet:

    - soit tu utilises un certificat émanant d'une autorité officielle (genre VeriSign) qui va te coûter plusieurs centaines d'euros par an

    - soit tu créées ton propre certificat, mais dans ce cas là, l'utilisateur aura droit à une boite de dialogue pas très rassurante lors du lancement de l'applet, genre ça:

    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Bonsoir,

    Merci pour ta réponse...

    J'entend par multi-utilisateur :

    Un applet sur un serveur qui permmete à plusieurs personnes d'échanger des informations entre-elles...

    Je suis au courant que les applets sont limités à l'accès de certaines informations sur les clients mais je cherche à mettre ces clients en relations sur le serveur.

    L'exemple d'un chat pourrait correspondre... Le but est d'échanger des informations entre les clients connectés à l'applet Java.

    Ceci pour permettre de créer un jeu de carte en ligne permettant à plusieurs utilisateurs de jouer par groupe de 4 sur une table de jeu et de choisir en fonction du nombre de clients de créer des tables suplémentaires si nécéssaire. Et donc le simple échange d'informations de type texte entre le serveur et les clients permettrai de faire...

    Comment pourrais-je résoudre ce problème?

    Est-ce plus simple en créant une application java plutot qu'un appel?

    Encore merci...
    N'oubliez pas de mettre le

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Citation Envoyé par Vesta Voir le message
    L'exemple d'un chat pourrait correspondre... Le but est d'échanger des informations entre les clients connectés à l'applet Java.
    C'est tout à fait possible sans signer l'applet. Deux exemples de mon crû: ici (jeu en réseau) et (chat en réseau).
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    J'ai également pensé passer par une base de donnée qui enregistrerait les différents utilisateurs connectés et qui serait le relai des informations à transmettre entre les utilisateurs via des tables "tampons" qui serviraient à envoyer les messages entre les utilisateurs qui se connecteraient à la base de donnée et qui récupéreraient les données les concernant...

    Cependant cela me semble fort complexe et je voulais donc savoir si il n'existait pas un moyen plus simple que celui évoqué ci-dessus (si je me suis exprimé suffisamment clairement )
    N'oubliez pas de mettre le

  6. #6
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Citation Envoyé par Vesta Voir le message
    Cependant cela me semble fort complexe et je voulais donc savoir si il n'existait pas un moyen plus simple que celui évoqué ci-dessus (si je me suis exprimé suffisamment clairement )
    - soit tu veux programmer un 'vrai' programme de serveur de jeu. Tu ne pourras alors le faire tourner que sur un serveur dédié. Il te faudra investir un peu (cf. ceci).

    - soit tu utilises un hébergeur gratuit, mais eux n'autorisent que l'hébergement de sites web (pages PHP). Dans ce cas il te faudra effectivement passer par des requêtes HTTP de l'applet vers des pages PHP du serveur. ça complexifie un peu le truc effectivement, mais c'est le prix de la gratuité de l'hébergement.

    - soit tu utilises une solution intermédiaire via un prestataire qui te fournit un 'serveur de socket', genre YourSocket, mais amha les tarifs comparés à un serveur de base chez OVH par exemple (12€ TTC/mois) rendent cette solution peu attrayante. L'applet signée étant alors obligatoire puisque le serveur de socket sera différent de celui qui hébergera ton applet.

    EDIT: une autre solution que j'avais expérimentée il y a quelques années, du temps où les serveurs dédiés étais (très) chers (et du temps où j'avais pas un rond ): détourner l'utilisation des serveurs de chat IRC: les applets (signées) se connectent à un serveur IRC donné, entrent dans un channel (privé) donné et s'échangent des messages formatés que ton applet parsera pour récupérer les données 'utiles'. Le principe est rigolo, mais la complexité est grande puisqu'il te faut implémenter une bonne partie du protocole IRC en plus de ton propre protocole d'échange de messages par dessus. C'est bien plus complexe que la solution à base de PHP+MySQL. Par contre, c'est un peu plus 'réactif' (les messages arrivent plus vite comparé au PHP+MySQL où typiquement tu fais une requête toutes les x secondes pour demander au serveur s'il n'a pas de nouveaux messages en attente pour le client).
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    la seule chose que je dois arriver a faire c'est envoyer des messages entre les clients... (et gérer leurs connections/déconnections)

    Je pensais a utiliser une base de donnée MySQL (gratuite sur mon hébergeur) pour faire passer les messages entre les clients...

    Je me demandais juste si il n'y avait pas une implémentation réseau dans les applications java...

    Je sais aussi que les applets fonctionnes différements au niveau des autorisations d'acces sur la machine et me demandais si c'etait complexe en applet si on ne pouvait pas utiliser une application pour contourner le probleme...

    Je te remercie déja pour tes réponse....
    N'oubliez pas de mettre le

  8. #8
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Dans ce cas, tu voudras sûrement:

    - ne pas laisser l'accès direct à la BdD par l'applet Java (pour des raisons de sécurité, mais également parce que les hébegeurs gratuits n'autorisent en général que les pages PHP hébergées à accéder aux bases). Mais plutôt passer par une page PHP hébergée sur ton serveur qui se chargera de collecter les paramètres de la requête envoyée par l'applet, d'interroger la base de données et de renvoyer le résultat à l'applet sous forme de page HTML (ou plutôt XML ici).

    Par exemple, ton applet va envoyer une requête HTTP avec une URL du type:
    - http://monsite.hebergeur.com/getNewEvents.php?clientSessionId=1234
    ou encore:
    - http://monsite.hebergeur.com/postNewEvent.php?clientSessionId=1234&myAction=playCard&value=10&color=pique

    La page PHP sera du genre (syntaxe probablement hyper incorrecte, c'est juste pour l'idée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?
    $connexion = mysql_connect($monlogin, $monpass, $dbIP, $database);
     
    $res = mysql_query($connexion,"SELECT * from joueurs where id=" + $clientSessionId);
    // on vérifie que le joueur est bien enregistré comme connecté.
    if (mysql_num_rows($res) == 0) {
        print("<error>NOT_REGISTERED</error>");
        exit;
    }
    // si oui, on récupère l'ensemble des événements à lui transmettre et on les formatte comme il faut:
    else {
        $events = mysql_query($connexion, "SELECT * from events_queue where playerId="+$clientSessionId);
     
        print("<events>");
        while ($evt = mysql_fetch_assoc($events) != null) {
            print("<"+$evt["EVENT_TYPE"]+">");
            // etc...
        }
        print("</events>");
    }
    Au final, la page PHP générera une sortie du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <events>
     
     <cardPlayedEvent>
       <playerId>123456</playerId>
       <cardValue>10</cardValue>
       <cardColor>COEUR</cardColor>
     </cardPlayedEvent>
     
     <playerDisconnectedTimeoutEvent>
       <playerId>23456</playerId>
     </playerDisconnectedTimeoutEvent>
     
    </events>
    etc...

    Ton applet récupèrera alors le XML comme étant le résultat de sa reqûete HTTP, le parsera pour l'utiliser dans ton jeu ensuite.

    Tout ce que ton applet a à faire, c'est d'envoyer régulièrement une requête vers une URL déterminée avec les bons paramètres pour récupérer les événements des autres joueurs (et poru montrer que le joueur est toujours là !). Même principe lorsque ton joueur veut émettre un événement.

    Pour cela, la classe HttpURLConnexion est ton amie et suffira largement
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  9. #9
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Pfiou ^^

    Je vais creuser de ce coté la car je ne souhaite pas investir dans un serveur de jeu... :-)

    Je te remercie pour ton aide...
    N'oubliez pas de mettre le

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

Discussions similaires

  1. fichier mdb + multi utilisateurs
    Par wello00 dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2005, 21h29
  2. base données avec java mono et multi utilisateurs
    Par Garion dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 03/12/2004, 09h20
  3. Accés multi utilisateurs avec fstab
    Par Sun3clipse dans le forum Administration système
    Réponses: 2
    Dernier message: 26/08/2004, 15h49
  4. Procédure stockée et multi utilisateurs
    Par Bruno34 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/04/2003, 15h32

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