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 :

UDP en P2P avec Java


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut UDP en P2P avec Java
    Bonjour à tous! Dans le cadre d'un projet de jeu utilisant du p2p en udp, j'ai quelques soucis de découverte des participants depuis internet.

    En locale tout fonctionne à merveille, mais sur internet non.
    J'ai donc tenté d'integrer un système d'UDP hole punching, mais vainement...

    Architecture du projet:

    J'ai un serveur d'application ou les joueurs se connectent pour préparer une partie (via écran lobby). Je passe les informations à chacun des joueurs sur l'ip et le port des autres joueurs. Malheureusement au moment d'envoyer les packet, les joueurs ne les reçoivent pas.
    J'ai voulu tester deux méthodes:

    1) UDP Hole punching:

    Actuellement je tente de passer outre le NAT des joueurs en faisant ainsi:

    Les joueurs se connecte au serveur d'application en TCP/IP (port 8888) et UDP (port 8113)

    Le serveur groupe les joueurs en partie de jeu et envoie les informations UDP de connexions vers les autres peers: En bref:

    - Ouvrir une connexion tcp avec le serveur [OK]
    - Envoyer un paquet bidon udp au serveur afin d'ouvrir un "trou" [OK]
    - Récuperer en tcp les adresses/port udp de chacun des participants [OK]
    - Envoyer un paquet de synchronisation aux participants [Pas de réponse, ok si tout en local]
    - Commencer à envoyer les infos de jeu via udp [Pas de réponse, ok si tout en local]

    Après quoi chaque clients essaye d'envoyer un message à l'autre en udp (et la ça ne marche pas...)

    Bref j'ai peut-etre pas tout compris à l'udp hole punching, ou alors ça ne fonctionne tout simplement pas...

    2) Utilisation d'une lib p2p en java

    La solution la plus fiable serait de réencapsuler le code réseau à travers une lib java qui gère elle meme le P2P. J'ai regardé un peu JXTA, et j'aimerais savoir si ce projet peut-etre appliqué pour une simple connexion point-to-point en UDP afin de bypass firewall/nat...
    Ou alors, existe-t-il des bibliotheques plus simple d'accès ou orienté jeu en Java?

    Bref si vous avez des pistes ou des conseils pour chacune des deux methodes, je suis preneur...

    Merci d'avance et.... helpppp

    ps: une clé beta www.naooak.com offerte à celui qui me trouve une solution

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par anykeyh Voir le message
    , ou alors ça ne fonctionne tout simplement pas...
    CA ne marche pas avec tout les équipement NAT. Ca dépend si le NAT, quand il ouvre les port, le fait en enregistrant aussi le serveur auquel il est lié. Si oui, les autres serveurs ne pourront pas passer à travers l'ouverture.

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut
    via l'algorithme STUN (http://en.wikipedia.org/wiki/STUN) je peux juste te dire la config des nats des deux cotés:

    Port-restricted cone NAT / Port-restricted cone NAT

    Du coup ça devrait marcher ce que je fais... :/

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ou pas,

    port-restricted cone nat:

    An external host (hAddr:hPort) can send packets to iAddr:iPort by sending packets to eAddr:ePort only if iAddr:iPort has previously sent a packet to hAddr:hPort.
    pour ce que j'en vois, le punch ne peut pas marche là. Seul le serveur sera capable de communiquer avec toi au travers du NAT.

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut
    Ok

    Du coup, tu m'orienterais sur quoi? uPnP? Tu as des idées interressantes pour faire passer de l'udp en p2p?

    Merci

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    udp ou tcp meme problème là. Il faut qu'au moins un des peer (ou a défaut le serveur) soit accessible sans NAT et serve de relai pour que les NAtés puissent communiquer entre eux.

Discussions similaires

  1. meilleure base de données avec java
    Par mial dans le forum JDBC
    Réponses: 11
    Dernier message: 10/11/2010, 11h49
  2. [CR][Java] imprimer un état CR avec java
    Par wassimb dans le forum SDK
    Réponses: 2
    Dernier message: 24/05/2004, 16h40
  3. Réponses: 3
    Dernier message: 27/01/2004, 16h15
  4. [JNDI] Equivalent avec Java Web Start ?
    Par cameleon2002 dans le forum Java EE
    Réponses: 8
    Dernier message: 18/09/2003, 18h55

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