Problème de peer to peer [C#]
| chandragon |
Posté le 15 Mar 2010 à 22:12
|
|
![]() Messages : 36 GCPoints : 4748 |
Bonjour ça faisait un bail que je n'étais pas venu sur ce forum, alors quand j'ai rencontré ce problème j'ai pensé à vous ^^' Dans le cadre de l'un de mes jeux je veux établir une connexion peer to peer par TCP pour pouvoir jouer en réseau. J'utilise donc des instances de TcpClient et TcpListener que je connecte. J'ai d'abbord testé sur une seule machine, en mettant "localhost" comme nom de domaine, et ça marche très bien. J'ai ensuite testé sur deux machines différentes en réseau, en mettant le nom de l'autre machine comme nom de domaine, et ça marchais toujours très bien. Enfin, j'ai voulu tester mon programme avec deux machines qui ne sont pas sur le même réseau en utilisant les adresses IP, et là ça ne marche pas, impossible de me connecter :( Si quelqun s'y connais mieux que moi en réseau et peut m'éclairer ça serait vraiment sympa ! merci beaucoup ![]() |
|
| Mod |
Posté le 16 Mar 2010 à 10:22
|
|
![]() Messages : 4954 GCPoints : 2100823 |
Il faut vérifier que tu utilises bien l'adresse IP publique et non locale si tu es derrière un routeur. Checke aussi la bonne ouverture du/des port(s) que tu utilises, et le déblocage des applications dans le firewall... A part ces pistes, je ne vois pas ce qui pourrait poser problème. | |
| chaos |
Posté le 16 Mar 2010 à 11:47
|
|
![]() Messages : 127 GCPoints : 11604 |
j'ajouterais que si tu est derrière un firewall style routeur/machinbox, il faut rediriger le port vers l'adresse ip locale de machine hébergent le serveur ! ex : ton client qui dispose d'une connexion lambda a internet se connecte a l'adresse ip 83.80.x.x (au port 666) et se retrouve bloqué au routeur ! Derrière ce vilain garçon se trouve ton serveur d'adresse ip 192.168.0.4, tu va donc sur la partie admin de ton routeur/machinbox et tu ajoute une redirection du port 666 vers l'adresse 192.168.0.4:666. Comme dirait les anglophones *accent américain* "et voila !". A noter que certain routeur font sa automatiquement avec une certaine configuration mais la redirection c'est plus safe vue que c'est toi qui maitrise ton réseau et évite a un petit malin d'exploiter les faille du premier Windows venue sur ton réseau.
"c'est un fait, on obtient plus facilement en demandant poliment une arme a la main qu'en demandant juste poliment."
http://www.doujin-spirit.net/ |
|
| chandragon |
Posté le 16 Mar 2010 à 13:16
|
|
![]() Messages : 36 GCPoints : 4748 |
Bonjour J'utilise bien l'adresse IP globale et non locale (quand les ordis sont en réseau l'adresse locale marche mais pas la globale). C'est peut-être en effet un problème de redirection, car sur mon réseau il y a plusieurs machines, et l'adresse IP désigne la box qui nous relie, pas une machine en particulier. Toutefois je ne vois pas pourquoi je devrais aller dans la partie admin faire ça. En effet toutes les applications en réseau global qu'on installe fonctionnent très bien (firefox, msn, skype, jeux en ligne) sans qu'on fasse de redirection. Il doit donc y avoir une façon de coder qui ne pose pas ce genre de problèmes ... ![]() |
|
| chaos |
Posté le 17 Mar 2010 à 08:20
|
|
![]() Messages : 127 GCPoints : 11604 |
En fait se connecter a un serveur distant n'est pas un problème, en outre héberger un serveur est autre chose. Les applis que tu a cité se connecte a un serveur donc pas de problème c'est ton routeur qui te connecte a ces dernier. En revanche si le serveur est dans ton réseau local il faut indiquer au routeur ou la connexion externe doit se connecter sur le réseau local . c'est pour sa que pour les logiciels utilisant le réseau edonkey ou les torrents il faut ouvrir ses ports voir les rediriger car il faut pouvoir accepter les connexions entrante.
"c'est un fait, on obtient plus facilement en demandant poliment une arme a la main qu'en demandant juste poliment."
http://www.doujin-spirit.net/ |
|
| chandragon |
Posté le 17 Mar 2010 à 13:09
|
|
![]() Messages : 36 GCPoints : 4748 |
Oui j'ai donné de mauvais exemples (même si je pensais que msn c'étais du peer-to-peer et non du client-serveur). Par contre skype lui je suis sûr qu'il marche en peer-to-peer, et tu as toi-même cité un exemple où c'est le cas. Et que ce soit pour skype ou bittorrent (j'utilise pas e-donkey moi ^^'), je n'ai pas eu de redirections à faire. ![]() |
|
| chaos |
Posté le 17 Mar 2010 à 14:29
|
|
![]() Messages : 127 GCPoints : 11604 |
chandragon a écrit : soi tu a ouvert tes ports soit tu bride l'utilisation de ton client torrent. En fait si ton firewall bloque les connections entrante tu peut te connecter aux clients qui ont eu leurs ports ouverts ce qui fait que sa marche, mais si tout le monde a ses port fermé il faut passer par une sorte de proxy qui fait le liens (pour sa que les téléchargements MSN sont si longs derrière un firewall).
"c'est un fait, on obtient plus facilement en demandant poliment une arme a la main qu'en demandant juste poliment."
http://www.doujin-spirit.net/ |
|
| chandragon |
Posté le 17 Mar 2010 à 15:21
|
|
![]() Messages : 36 GCPoints : 4748 |
Mmmmm ... Si je l'ai fait c'est sans m'en rendre compte alors. En tout cas je n'ai pas été dans la partie admin de ma box pour rediriger tel ou tel port ça c'est sûr ! C'est donc qu'il y a un moyen plus simple de le faire non ? ![]() |
|
| chaos |
Posté le 17 Mar 2010 à 19:18
|
|
![]() Messages : 127 GCPoints : 11604 |
j'ai un peut l'impression de parler dans le vide, donc j'ai fait un schéma (je suis programmeur pro pas graphiste hein ...)![]() comme tu voit si les IPs sont bonne c'est une question de firewall (qui bloque les ports). Comment passer outre le firewall ? il faut un serveur sans firewall(donc avec des ports accessible) qui fasse le relais, peut importe tant qu'il est connecté a internet, mais la on s'éloigne de l'architecture peer to peer.
"c'est un fait, on obtient plus facilement en demandant poliment une arme a la main qu'en demandant juste poliment."
http://www.doujin-spirit.net/ |
|
| chandragon |
Posté le 18 Mar 2010 à 16:31
|
|
![]() Messages : 36 GCPoints : 4748 |
D'accord, il est donc totalement impossible d'être serveur derrière un firewall (sans avoir ouvert les ports à utiliser). Et le firewall dont on parle, c'est celui de la box c'est bien ça ? (parceque j'ai essayé en desactivant le firewall de mon ordi et ça ne marche pas nonplus). Mais dans l'affaire, pour faire marcher le peer to peer, et ton shéma le montre, il faut au moins un ordi capable de faire office de serveur (et donc sans firewall, ou firewall non-bloquant). Sauf que dans mon cas, je voudrai établir une connexion entre différents ordinateurs, indépendament du fait qu'ils aient un firewall ou non, et donc sans être sûr que l'une d'elles pourra être serveur. Donc dans ces cas là, comment on fait ? ^^' Je suppose qu'il y a bien d'autres jeux qui le font (en particulier des FPS). Ou alors c'est pas dutout possible et on est obligé d'avoir un serveur disponible tout le temps quelque-part auquel les joueurs se connectent et qui redirige toutes les infos sur les autres joueurs? Mais bon là c'est plus dutout du peer-to-peer ... ![]() |
|
| chaos |
Posté le 19 Mar 2010 à 11:09
|
|
![]() Messages : 127 GCPoints : 11604 |
Tu a tout comprit, je parle effectivement du firewall matériel de ta box et non du firewall logiciel de ton ordinateur. En fait même dans le peer to peer il faut un serveur qui distribue la liste des peers avec leurs IP. Après ce sont les utilisateurs qui s'adapte au autres si ils peuvent être ou non serveur. L'adresse du serveur de distribution des IP doit être fixe car tout le monde doit la connaître.
"c'est un fait, on obtient plus facilement en demandant poliment une arme a la main qu'en demandant juste poliment."
http://www.doujin-spirit.net/ |
|
| chandragon |
Posté le 19 Mar 2010 à 16:25
|
|
![]() Messages : 36 GCPoints : 4748 |
D'accord, merci beaucoup !
![]() |
|
| Scheindorf |
Posté le 20 Mar 2010 à 20:09
|
|
![]() Messages : 77 GCPoints : 30404 |
Si certaines applications tournent comme serveur avec succes sans que tu ai eu a rediriger les ports manuellement c'est possible si elles utilisent l'UPnP et que ton routeur est compatible. Penche toi de ce coté là. C'est un protocole pour demander a un appareil sur le reseau d'effectuer certaines actions, generalement demander a un routeur d'ouvrir un port externe pendant une periode donnée.
Studios Corridor
--Participez a la constitution de la base de donnée Triathlon!-- http://triathlon.lecorridor.net/question.php |
|
| chandragon |
Posté le 29 Mar 2010 à 03:23
|
|
![]() Messages : 36 GCPoints : 4748 |
D'accord je vais rechercher de ce coté là ;)
![]() |
|




