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
Partager