J'ai créé un petit programme de discussion, qui fonctionne parfaitement lorsque Client & Server est exécuté sur le même ordinateur (et probablement du réseau, également). Cependant, dès que j'essaie de vous connecter à un autre ordinateur sur Internet, la connexion de la prise est simplement expéniée. Est-ce à cause de pare-feu / de routeurs, etc. p>
et comment puis-je connecter un serversion et une prise sur Internet? P>
4 Réponses :
Si votre serveur est derrière une boîte de routeur NAT (et la plupart des ordinateurs domestiques sont, surtout si vous utilisez WiFi), il ne sera pas accessible de l'extérieur, sauf si vous configurez votre routeur sur le port sur ce serveur. < / p>
Quelle est l'adresse IP de votre ordinateur serveur? Si c'est 192.168.x.x ou 10.x.x.x, il s'agit d'une adresse non routable et n'est pas atteinte de l'extérieur. P>
Mais alors comment les serveurs du monde entier peuvent-ils contacter mon ordinateur?
Eh bien, l'IP du réseau local (SMTH. Comme 192.168.xxx) est différent de l'IP Internet (smth. Sinon, vérifié avec whaismyip.com), mais les IP publiques sont identiques sur mon iPod et mon ordinateur portable ....
C'est votre ordinateur qui leur se connecte non à celui-ci. Vous pouvez vous connecter à n'importe quel nœud avec adresse IP publique. Si le serveur est derrière un NAT, le rounter NAT peut être configuré pour rediriger les connexions et tel, mais c'est une question de superutilisateur
@Jake, comme je l'ai dit dans ma réponse, vous devez configurer un transfert de port sur votre routeur.
Premièrement, testez pour voir si cela fonctionne vraiment sur un réseau local; On dirait que tu penses juste que ça fait. P>
Si cela fonctionne sur votre réseau local, il est peut-être échoué parce que le serveur manque d'une propriété intellectuelle et fonctionne derrière un routeur de natation. P>
Comment savoir mon serveur manque d'une adresse IP publique? Mon ordinateur portable et mon iPod montrent la même adresse IP sur Whaismyip.com, cela signifie-t-il que mon serveur (ordinateur portable) n'a pas de propriété intellectuelle publique?
Cependant, dès que j'essaie de vous connecter à un autre ordinateur sur Internet, la connexion de socket est simplement expirée. Est-ce à cause de pare-feu / de routeurs, etc. p> blockQuote>
Oui, probablement. Vous courez dans le
NAT Strong> Problème: essentiellement la même chose Des cartes d'adresse IP visibles de manière externe vers de nombreux points d'extrémité visibles à part en interne et le point d'extrémité externe ne sait pas quel point final interne donner à votre prise de courant. P> Le moyen le plus simple autour de cela est de que vos clients se connectent à une tierce partie qui puisse voir tous les deux forte>, puis le tiers médiate la communication. C'est ainsi que la plupart des protocoles de messagerie instantanée fonctionnent, par exemple. P>
Si vous n'avez aucun moyen de contrôler une entité tiers comme celle-ci, une alternative à connecter directement deux clients consiste à ouvrir les deux clients à ouvrir un port convenu, puis à la carte des communications sur ce point de terminal interne . Ceci fournit le lien manquant que le point final visible de l'extérieur (par exemple, votre routeur à domicile) doit fournir la communication à sa destination visée. P>
@JAKE: Je soupçonnai que ce soit le cas - voir mon dernier paragraphe. Fondamentalement, votre programme de discussion utilise-on un port arbitraire (s'il s'agit d'IPv4, choisissez un nombre supérieur à 1024, cependant, car ceux-ci sont réservés) et exigent que les deux clients disposent de ce port ouvert sur leurs routeurs.
@Johnfeminella Hi John, pouvez-vous donner un exemple ou me guider comment je peux écrire ce module «tiers» auquel les deux clients peuvent se connecter?
@Johnfeminella est une application torrent également connectée à une tierce partie ?? Ou comment Torrent surmonte-t-il le problème de NAT ??
En supposant en cours d'exécution sur le même ordinateur, vous voulez dire que vous indiquez au client le serveur de 127.0.0.1 / localhost, cela ne devrait pas être un problème dans votre code mais à cause de pare-feu ou de routeurs. Si votre serveur est derrière un routeur effectuant une masquerading (c'est-à-dire que le serveur n'a pas d'adresse IP publique mais privée comme 192.168.xy, par exemple), vous devez configurer le routeur pour passer une connexion à partir d'Internet à l'ordinateur en cours d'exécution. serveur. p>
Une autre raison pour laquelle cela ne fonctionne pas pourrait être la façon dont vous liez votre serveur à l'interface. Si vous spécifiez le 127.0.0.0.1 Là, le serveur n'écoutera que pour les demandes provenant du même système. Si vous ne spécifiez pas d'adresse, il écoute toutes les interfaces. P>
edit strong> Votre commentaire indique que vous avez en effet le problème NAT comme les autres. Configuration de votre routeur en conséquence est probablement la solution la plus facile. P>