Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Réseau et multijoueurs
Réseau et multijoueurs Forum d'entraide pour le réseau et le multijoueur pour les jeux vidéo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/01/2012, 09h17   #1
ikeas
Membre émérite
 
Inscription : juillet 2008
Messages : 1 095
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 1 095
Points : 942
Points : 942
Par défaut UDP Braodcast sur internet

bonjour

j'aimerais faire un broadcast UDP sur l'internet
je travail en c#
quand je lance mes deux appli sur ma machine cela marche
mais quand je les lance sur des machines sur le net ca ne fonctionne pas du tout

(si je me suis trompé de forum et que vous savez ou je dois mettre ce message prevenez moi merci)

voici les codes

code de l'envoi
Code :
1
2
3
4
5
6
7
8
9
10
11
 
UdpClient udpClient = new UdpClient();
                // broadcasts identification request message to the network
                Byte[] sendBytes = Encoding.ASCII.GetBytes("USER=" + USER + "*********");
 
                // set address to broadcast address and port to PORT
                IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 1818);
                //IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Broadcast, 1818);
 
                // broadcast data
                udpClient.Send(sendBytes, sendBytes.Length, RemoteIpEndPoint);
code pour la reception

Code :
1
2
3
4
5
6
7
8
 
  udpClient = new UdpClient();
            IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 1818);
            udpClient.Client.Bind(RemoteIpEndPoint);
 
                    Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
                    string returnData = String.Empty;
                    returnData = Encoding.ASCII.GetString(receiveBytes);
merci si vous avez une idée
__________________
IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
----------------------------------------------------
Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
ikeas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 22h11   #2
nouknouk
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 612
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 1 612
Points : 1 781
Points : 1 781
Salut,

Le problème ne vient pas de ton appli, mais c'est une limitation de la façon dont internet fonctionne: le broadcast n'est pas routé sur le net, seul l'unicast l'est.

Donc aucune chance qu'un paquet broadcast dépasse les limites de ton réseau local.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 22h16   #3
ikeas
Membre émérite
 
Inscription : juillet 2008
Messages : 1 095
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 1 095
Points : 942
Points : 942
et tu pourrais pas me dire ou je pourrais trouver du code sur unicast ?
si possible en c#
__________________
IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
----------------------------------------------------
Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
ikeas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 22h32   #4
nouknouk
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 612
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 1 612
Points : 1 781
Points : 1 781
Unicast, ça veut juste dire "un vers un". C'est le principe de tout paquet envoyé sur le net, quel que soit le protocole (TCP, UDP, ...). Dit autrement, quand tu fais une 'bête' connexion TCP ou UDP 'classique', c'est déjà de l'unicast, (ou du "point à point" si tu préfères).

Sur le net, le seul moyen d'envoyer un même contenu à x destinataires sur le net est d'envoyer x fois le contenu, une fois pour chaque destinataire.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 23h40   #5
ikeas
Membre émérite
 
Inscription : juillet 2008
Messages : 1 095
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 1 095
Points : 942
Points : 942
oui mais si j'ai bien compris c'est que ça suppose que tu doivent connaitre l'adresse de qui tu veux envoyer
c'est la tout mon problème

mon listener est sur une adresse pas fixe
donc les serveur ne peuvent pas savoir a qui envoyer ....

le principe que je voudrait mettre en place est le suivant :
-plusieurs serveurs se signalent a mon listerner, ils communiquent leurs adresses
-le listerner se connecte a eux en établissant une connections TCP pour échanger des informations

si tu as une idee pour mettre en place ce principe ca m'arrangerait

si tu savais ou trouver du code c# aussi

merci
__________________
IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
----------------------------------------------------
Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
ikeas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 13h07   #6
nouknouk
Modérateur
 
Avatar de nouknouk
 
Homme
Inscription : décembre 2006
Messages : 1 612
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32

Informations forums :
Inscription : décembre 2006
Messages : 1 612
Points : 1 781
Points : 1 781
Il faut que tu regardes du côté de la notion d'annuaire. Quand tu veux contacter quelqu'un par téléphone et que tu ne connais pas son numéro, tu ne vas pas appeler les 60 millions de numéro en France pour espérer trouver celle qui t'intéresse ; tu vas plutôt consulter un annuaire qui te donnera le bon numéro.

Concrètement dans ton cas, ceux qui veulent pouvoir être contactés vont s'enregistrer (ie. leur adresse IP) dans ton annuaire qui est situé à un endroit fixe (une simple page web chez un hébergeur gratuit peut suffire). Ces même acteurs auront pour tâche de mettre à jour leur informations (leur IP) à chaque fois qu'elles changent.

Quand ton autre programme voudra les contacter, il va d'abord consulter l'annuaire pour récupérer l'ensemble des adresses IP (ou celles qui l'intéressent) et il pourra ensuite contacter directement les interlocuteurs qu'il veut.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.
nouknouk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 13h25   #7
ikeas
Membre émérite
 
Inscription : juillet 2008
Messages : 1 095
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 1 095
Points : 942
Points : 942
bon j'ai résolu une parti de mon problème pour faire un unicast
j'ai pris un domaine toto.com par exemple qui enregistre l'adresse de ma box sur le net
j'ai fait un reroutage NAT sur ma box pour le port en UDP

et je fais un unicast de mon client vers mon serveur
avec l'adresse resolu de toto.com
ca ca fonctionne bien

maintenant ce que j'aurais aimé faire c'est lorsque mon serveur reçois la requête UDP
il puisse établir une connections TCP avec le client
évidement le client a un listenerTCP en route

le problème c'est que lorsque je fais tourner
les deux app sur la même machine
j'ai l'erreur
"Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée"
bizarrement le serveur reçoit l'adresse passerelle (interne pas celle du net)

les deux app sur des ordinateurs sur le net
j'ai l'erreur
"L'adresse demandée n'est pas valide dans son contexte"
bizarrement le serveur reçoit l'adresse de la passerelle (mais celle du net)
__________________
IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
----------------------------------------------------
Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
ikeas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2012, 11h28   #8
SuperBidi
Membre régulier
 
Homme
Architecte serveur
Inscription : septembre 2011
Messages : 49
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Architecte serveur
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2011
Messages : 49
Points : 75
Points : 75
Didiou, tu fais tout à l'envers ! (si je peux me permettre)
Tu es en train de faire en sorte que le serveur se connecte au client, ie. tu inverses la logique client serveur.
Déjà, tu vas te faire jeter par le moindre firewall/NAT, parce que tu tentes une connexion qui est assimilée à une tentative de hacking par majorité des équipements réseau.
Il faut que ce soient tes clients qui créent la connexion directement en TCP. Ou éventuellement, qu'ils créent la connexion UDP, puis la connexion TCP (je sais pas pourquoi tu as besoin de passer par l'UDP avant le TCP).

Honnêtement, pour moi, y a un moment où tu as une erreur de logique dans ton design qui t'amène à faire ce choix qui me paraît hasardeux. A part les cas de NAT punchthrough, j'ai du mal à imaginer une situation où tu as besoin de faire ça.
SuperBidi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h33.


 
 
 
 
Partenaires

Hébergement Web