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 :

faire un chat pair a pair ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Par défaut faire un chat pair a pair ?
    Bonjour,
    j'ai developpé une petite application qui permet de chater.
    Puis je me suis dit : on va mettre ca sur le net.

    Donc en premier, j'ai transformé l'appli en applet (pas facile mais c'est fait)

    ensuite, vu que je ne veux pas laisser mon ordi allumé 24h/24 j'ai souscrit un .fr + herbergement.

    Seulement j'ai fait ca trop hativement et je me rend compte que l'hebergeur (OVH) ne me permet ni :
    -de lancé une appli serveur java (visiblement c'est pas possible en en C, ni python enfin d'apres ce qu'on ma répondu )
    -d'ouvrir un port (donc le serveur de socket )

    maintenant dans ma grande folie, je me demande si je peux pas faire un chat qui (attention ca va faire mal) utilise uniquement la base MySQL

    par contre ca me plais pas car niveau securité, mettre les identifiant MySQL dans l'applet = gros risque ...

    je voulais savoir si c'est possible, si oui est ce que ca fonctionnera assez vite.
    Est ce que ca me bouffera un max de bande passante ...
    est ce que ce serra du direct, ou faut pas rever ?


    enfin si quelqu'un connais un hebergeur pas cher ( 20-40€/année voir moins) qui laisse des ports ouvert et permet de lancé un deamon java (l'appli serveur) merci de bien vouloir me le dire

    ps : je suis ouvert à tout autre solution, comme par ex ecrire le chat dans un fichier text ou autre chose ....


    edit : sinon est il possible de faire simplement un chat pair à pair ...

    genre :
    1 : un client se connecte
    2 : l'applet envoie l'IP du client dans la base de donnée
    3 : un thread recupere sans cesse la liste des clients (et donc des IPs)
    4 : le client envoie un message publique => tous les clients le recoivent (sans serveur je sans que ca va posé des problemes ca)
    5 : le client envoie un message privé => juste l'ip du destinataire le recois (pair à pair )

    6 : le client se deconnecte, la base de donnée se met à jour et enleve l'ip
    7 : un thread qui met a jour la base de donné toutes les 1 min pour dire qu'on est en ligne . Ce meme thread verifie si tout le monde est a jour (c'est a dire, qu'il n'y a personne qui n'a pas repondu depuis plus de 1min) et enleve ceux qui sont plus en ligne (deconnection internet, plantage pc ... )
    si quelqu'un veux bien m'aider ce serrai SUPER !

    sinon petit probleme, vu qu'il n'y a pas de serveur, comment faire pour

  2. #2
    Membre éclairé Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Par défaut
    oui je pense que c'est possible pour le pair à pair.
    un thread qui met a jour la base de donné toutes les 1 min pour dire qu'on est en ligne
    Pour éviter de consulter sans arret la base de donnée, ce que tu pourrais faire c'est que chaque client verifie qu'un autre client est connecté, et ceci de façon circulaire : C1>C2>C3>C4>C1 (">" = verifie si CX connecté). La base de donnée des ip ne servirait donc qu'aux clients qui se connectent. Le nouveau client se connecterait sur le dernier arrivé par exemple,en lui donnant son ip, ensuite cette ip serait transférée via la chaine circulaire pour alimenter la base de donnée des connectés de chaque client.
    Si C2 veut se deconnecter, il le signale à C3(C3 signale la deconnection via la chaine) . Si jamais C2 se deconnecte brutalement, C1 le verra et le signalera aux autres.
    Ensuite C1 se connecte à C3.
    La chaine deviendrait C1>C3>C4>C1.
    Quand un client veut envoyer un message à tout le monde, son message pourrait-etre transféré via cette chaine circulaire ou en envoyant lui meme à tous les clients en consultant sa base de données ?
    ...
    C'est peut-etre pas le bon principe mais c'est ce que je m'imagine. Ca pourrait permettre au groupe de clients d'etre presque autonome.

  3. #3
    Membre émérite

    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
    Par défaut
    Petit hic... l'applet ne connais pas l'adresse IP du client

  4. #4
    Membre expérimenté
    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
    Par défaut
    Pour un serveur pas trop cher, il y a les VPS (serveurs virtuels privés), il faut savoir administrer soi-même son serveur mais du coup, tu peux installer Java, Tomcat et tout ce que tu veux. Jamais essayé personnellement mais forcément, ça coûte moins cher qu'un serveur tous services inclus.

    http://embruns.net/logbook/2006/06/14.html#003742

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Par défaut
    Citation Envoyé par orelero
    oui je pense que c'est possible pour le pair à pair.

    Pour éviter de consulter sans arret la base de donnée, ce que tu pourrais faire c'est que chaque client verifie qu'un autre client est connecté, et ceci de façon circulaire : C1>C2>C3>C4>C1 (">" = verifie si CX connecté). La base de donnée des ip ne servirait donc qu'aux clients qui se connectent. Le nouveau client se connecterait sur le dernier arrivé par exemple,en lui donnant son ip, ensuite cette ip serait transférée via la chaine circulaire pour alimenter la base de donnée des connectés de chaque client.
    Si C2 veut se deconnecter, il le signale à C3(C3 signale la deconnection via la chaine) . Si jamais C2 se deconnecte brutalement, C1 le verra et le signalera aux autres.
    Ensuite C1 se connecte à C3.
    La chaine deviendrait C1>C3>C4>C1.
    Quand un client veut envoyer un message à tout le monde, son message pourrait-etre transféré via cette chaine circulaire ou en envoyant lui meme à tous les clients en consultant sa base de données ?
    ...
    C'est peut-etre pas le bon principe mais c'est ce que je m'imagine. Ca pourrait permettre au groupe de clients d'etre presque autonome.
    c'est une bonne idée mais ca me parrait un peux hard à mettre en place.
    En fait je cherche uniquement à faire du pair à pair car OVH ne me permet pas de lancé une application serveur...

    contrairement au partage de fichier, je ne cherche pas à rendre un serveur inutile
    mais bon je vais etudier la question

    Petit hic... l'applet ne connais pas l'adresse IP du client
    perso je vois pas ou est le probleme ...
    au pire l'applet recupere l'ip de l'utilisateur grace à php ...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Par défaut
    c'est encore moi, apres une longue periode d'absence j'en reviens à ce sujet...
    J'ai beau reflechir et essayer, mais je crois que j'ai pas la logique p2p...
    si quelqu'un pouvais m'aider un peux ce serai sympa.

    est ce qu'en utilisant ca : http://p2psockets.jxta.org/ ca me facilitera la vie ?
    Je pense que oui, car ya pas de probleme de firewall deja d'une part... (mais la encore je saisi pas comment ce genre d'outil reussi à outrepasser le firewall pour par exemple ouvrir un port ....
    je pensais que ce serrai plus simple avec ce projet, car du coup n'importe quel client peut avoir une ip ou un dns virtuel ... donc j'ai l'idée suivante.

    1: quelqu'un se connecte sur le site, qui en php suivant l'identifiant créer une page avec l'aplet (qui recois divers parametres)
    2: pour une raison de securité l'applet appel une autre page php pour valider les identifiants et met à jour la base pour dire qu'on est online.
    3:l'applet en profite pour appeler une autre page php qui lui renvoie les ID (ou DNS virtuels) de tous les membres connecté
    4: l'applet créer un p2pserveursocket et X clients qui se connectent aux X serveurs online
    ...

    c'est la que je dois avoir un probleme, je parle toujours client serveur
    donc si ya 50 membres en ligne, j'aurai sur client :
    1 serveur
    49 client
    deja que j'ai un peux de mal avec les threads mais si je dois en lancer tellement ....

    bref j'ai l'impression mes idées sont tordus

  7. #7
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    Citation Envoyé par alain57
    bref j'ai l'impression mes idées sont tordus
    C'est le cas de le dire lol


    Plus sérieusement,

    Primo: Si tu veux faire du peer to peer utilise JXTA ! (Au cas où tu trouves un bon tuto en français sur JXTA je serais intéressé)

    Secondo: Avant de t'imaginer comment tu vas t'y prendre pour référencer les personnes connectés et tout le reste, apprend comment fonctionne JXTA qui va sûrement te faire voir les choses autrement et donc changer la conception de ton chat..

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Par défaut
    Citation Envoyé par soad
    C'est le cas de le dire lol


    Plus sérieusement,

    Primo: Si tu veux faire du peer to peer utilise JXTA ! (Au cas où tu trouves un bon tuto en français sur JXTA je serais intéressé)

    Secondo: Avant de t'imaginer comment tu vas t'y prendre pour référencer les personnes connectés et tout le reste, apprend comment fonctionne JXTA qui va sûrement te faire voir les choses autrement et donc changer la conception de ton chat..
    j'y ai deja pensé, mais j'ai lu sur un site que JXTA est que pour les appli, pas pour une applet

    edit : ok j'ai ecris un peu vite on peux faire une aplet mais faut qu'elle soit signée ...
    maintenant j'ai une question bonus (enfin 2)
    1: comment faire pour ne pas avoir la fentre jxta configurator (en la configurant dans le programme ...)
    2: quand on lance un prog jxta, il créer un repertoir .jxta dans le repertoire de l'appli, j'ai pas encore pu me lancer dans une applet jxta (ce week end j'essais) mais je crois que cette création de repertoire va m'embeter... comment l'ignorer (si elle est inutile vu qu'elle contien les parametres de configuration ...)

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/05/2010, 13h52
  2. Réponses: 5
    Dernier message: 01/03/2010, 20h57
  3. [PHP-JS] Faire un chat en PHP
    Par laida1 dans le forum Langage
    Réponses: 3
    Dernier message: 07/08/2007, 11h46

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