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

Réseau et multijoueurs Discussion :

UDP Braodcast sur internet


Sujet :

Réseau et multijoueurs

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !!!!
    http://ultimatecorp.eu/wpf/

  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,

    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.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    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 !!!!
    http://ultimatecorp.eu/wpf/

  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
    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.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    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 !!!!
    http://ultimatecorp.eu/wpf/

  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
    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.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    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 !!!!
    http://ultimatecorp.eu/wpf/

  8. #8
    Membre régulier
    Homme Profil pro
    Architecte serveur
    Inscrit en
    Septembre 2011
    Messages
    64
    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 : 64
    Points : 107
    Points
    107
    Par défaut
    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.

Discussions similaires

  1. UDP Broadcast sur internet
    Par ikeas dans le forum Développement
    Réponses: 6
    Dernier message: 26/01/2012, 14h04
  2. Les sockets UDP sur internet?
    Par chm0105 dans le forum C++Builder
    Réponses: 9
    Dernier message: 10/08/2007, 09h55
  3. visibilite de mon serveur sur internet
    Par jabaka dans le forum Apache
    Réponses: 9
    Dernier message: 03/05/2004, 15h22
  4. Réponses: 5
    Dernier message: 27/08/2003, 12h45

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